遍历过滤数据 存入数组
要求得到 一个数组 保存了这些值 如:[手机制式][GSM] 是数组的一个元素
<table cellspacing= "0 " cellpadding= "0 " width= "677 " border= "0 ">
<tbody>
<tr>
<td> 手机制式 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> GSM </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 网络传输 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> GPRS </td>
</tr>
<tr>
<td> 支持频段 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> GSM(900/1800/1900MHz) </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 手机类型 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 直立式 </td>
</tr>
<tr>
<td> 通话时间(分钟) </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 210 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 待机时间(小时) </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 260 </td>
</tr>
<tr>
<td> 智能手机 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> Symbian系统 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 操作系统 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> Symbian OS 8.1a </td>
</tr>
<tr>
<td> 上市时间 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 2006-08 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 机身内存 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 20MB动态内存 </td>
</tr>
<tr>
<td> 内屏颜色 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 26万色 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 屏幕尺寸 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 176×208像素 </td>
</tr>
<tr>
<td> 外屏颜色 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 无 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 数码相机功能 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 内置 </td>
</tr>
<tr>
<td> 数码相机感光元件 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> CMOS </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 数码相机像素(万) </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 200 </td>
</tr>
<tr>
<td> 和弦铃声 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 64和弦铃声 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持蓝牙技术 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持 </td>
</tr>
<tr>
<td> MP3播放 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持存储卡 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> RS-MMC </td>
</tr>
<tr>
<td> 收音机功能 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 来电防火墙 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 不支持 </td>
</tr>
<tr>
<td> 手写输入 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 不支持 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 电子邮件 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持 </td>
</tr>
<tr>
<td> 中文输入方式 </td> <td width= "1 " bgcolor= "#cccccc "> </td>
<td> 笔划,拼音等 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 红外接口 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 不支持 </td>
</tr>
<tr>
<td> 电话簿容量 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 以内存为限 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 电话簿分组 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 支持 </td>
</tr>
<tr>
<td> 话机短信息容量 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> 以内存为限 </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> ? </td>
<td width= "1 " bgcolor= "#cccccc "> </td>
<td> ? </td>
</tr>
</tbody>
</table>
[解决办法]
不太清楚楼主的意图,如果只是为了编辑省事的话,可以用下面这个方法:
如果你在使用EmEditor,新建一个宏文件(即*.jsee),输入下面的内容:
document.selection.Replace( "^(:?.+) <td> (:?[^td]+) </td> .*$|^.+$ ", "\\2 ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "\\n\\n ", "\\n ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "\\n\\n ", "\\n ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "\\n\\n ", "\\n ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "^.+$ ", "[\\0] ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "\\n ", " ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
document.selection.Replace( "\\[[^\\]]+\\]\\[[^\\]]+\\] ", "\x22\\0\x22, ",eeFindNext | eeReplaceAll | eeFindReplaceRegExp);
保存一下。
打开EmEditor,选择 Macros 菜单,选择 Select... 项,加载你刚保存的这个宏文件。
将源HTML复制到当前窗口中,按F4。
生成的结果大致如下:
"[手机制式][GSM] ", "[网络传输][GPRS] ", "[支持频段][GSM(900/1800/1900MHz)] ", "[手机类型][直立式] ", "[通话时间(分钟)][210] ", "[待机时间(小时)][260] ", "[智能手机][Symbian系统] ", "[操作系统][Symbian OS 8.1a] ", "[上市时间][2006-08] ", "[机身内存][20MB动态内存] ", "[内屏颜色][26万色] ", "[屏幕尺寸][176×208像素] ", "[外屏颜色][无] ", "[数码相机功能][内置] ", "[数码相机感光元件][CMOS] ", "[数码相机像素(万)][200] ", "[和弦铃声][64和弦铃声] ", "[支持蓝牙技术][支持] ", "[MP3播放][支持] ", "[支持存储卡][RS-MMC] ", "[收音机功能][支持] ", "[来电防火墙][不支持] ", "[手写输入][不支持] ", "[电子邮件][支持] ", "[中文输入方式][笔划,拼音等] ", "[红外接口][不支持] ", "[电话簿容量][以内存为限] ", "[电话簿分组][支持] ", "[话机短信息容量][以内存为限] ", "[?][?] ",
稍微修改一下就可以用了。
[解决办法]
使用正则表达式:this.tbOld.Text是源字符串,sb里存储的是替换后的字符串。
Regex regex = new Regex(@ " <td> (.*?) </td> ", RegexOptions.Singleline);
MatchCollection mc = regex.Matches(this.tbOld.Text);
StringBuilder sb = new StringBuilder();
sb.Append( "\ " ");
for (int i = 0; i < mc.Count; ++i)
{
if (i > 0 && i % 2 == 0)
sb.Append( "\ ",\ " ");
sb.Append(String.Format( "[{0}] ", mc[i].Groups[1].Value));
}
sb.Append( "\ " ");
this.tbNew.Text += sb.ToString();
运行结果:
"[手机制式][GSM] ", "[网络传输][GPRS] ", "[支持频段][GSM(900/1800/1900MHz)] ", "[手机类型][直立式] ", "[通话时间(分钟)][210] ", "[待机时间(小时)][260] ", "[智能手机][Symbian系统] ", "[操作系统][Symbian OS 8.1a] ", "[上市时间][2006-08] ", "[机身内存][20MB动态内存] ", "[内屏颜色][26万色] ", "[屏幕尺寸][176×208像素] ", "[外屏颜色][无] ", "[数码相机功能][内置] ", "[数码相机感光元件][CMOS] ", "[数码相机像素(万)][200] ", "[和弦铃声][64和弦铃声] ", "[支持蓝牙技术][支持] ", "[MP3播放][支持] ", "[支持存储卡][RS-MMC] ", "[收音机功能][支持] ", "[来电防火墙][不支持] ", "[手写输入][不支持] ", "[电子邮件][支持] ", "[中文输入方式][笔划,拼音等] ", "[红外接口][不支持] ", "[电话簿容量][以内存为限] ", "[电话簿分组][支持] ", "[话机短信息容量][以内存为限] ", "[?][?] "