C# html 正则表达式 字符串 替换

tdtclls 2008-04-29 11:10:47
类似下面一段字符串,我想把他们转换成XML格式的文件,可是像"border=1"这样的属性值没有加引号,转换时就报错,我就想把所有"="右边未加引号的属性值加上引号,单引号也可以正常识别成XML格式;有没有一次性就可以替换所有的正则表达式,请赐教!

<TABLE id=TabData border=1 cellpadding=\"0\" cellspacing=\"0\" name=\"fsd\"><TBODY><TR><TD align=middle width=120>字段名称</TD><TD align=middle width=120>中文描述</TD><TD align=middle width=120>字段类型</TD><TD align=middle width=120>字段长度</TD><TD align=middle width=120>不能为空</TD><TD align=middle width=120>删除</TD></TR><TR><TD align=middle width=120><INPUT width=60px></TD><TD align=middle width=120><INPUT width=60px></TD><TD align=middle width=120><SELECT><OPTION value=VACAHAR2 selected>字符串型</OPTION><OPTION value=CHAR>字符型</OPTION><OPTION value=NUMBER>数字型</OPTION><OPTION value=INT>整型</OPTION><OPTION value=DATE>日期型</OPTION></SELECT></TD><TD align=middle width=120><INPUT width=60px></TD><TD align=middle width=120><INPUT type=checkbox></TD><TD align=middle width=120><A href=\"#\">删除</A></TD></TR></TBODY></TABLE>
...全文
447 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
plglenn 2009-05-01
  • 打赏
  • 举报
回复
d
tdtclls 2008-04-29
  • 打赏
  • 举报
回复
还有个问题,就是<INPUT width="60px">,在尾部追加"/"的问题;即<INPUT width="60px"/>
wumingbing_8027 2008-04-29
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 tdtclls 的回复:]
楼上的兄弟,delegate(Match m)
{
return m.Value.ToString().Replace(m.Groups[1].Value.ToString(),"\"" + m.Groups[1].Value.ToString() + "\"");
});
这个在C#里写法有点问题
[/Quote]


最烦最烦最烦最烦最烦最烦最烦最烦说这种话的人:有点问题
你要告诉我有什么问题啊,报什么错啊之类的啊
tdtclls 2008-04-29
  • 打赏
  • 举报
回复
楼上的兄弟,delegate(Match m)
{
return m.Value.ToString().Replace(m.Groups[1].Value.ToString(),"\"" + m.Groups[1].Value.ToString() + "\"");
});
这个在C#里写法有点问题
wumingbing_8027 2008-04-29
  • 打赏
  • 举报
回复
"=\\s*([^\\s\"]+)" 改为"=\\s*([^\\s\">]+)"

string text = "<TABLE id=TabData border= 1 cellpadding=\"0\" cellspacing=\"0\" name=\"fsd\"> <TBODY> <TR> <TD align=middle width=120>字段名称 </TD> <TD align=middle width=120>中文描述 </TD> <TD align=middle width=120>字段类型 </TD> <TD align=middle width=120>字段长度 </TD> <TD align=middle width=120>不能为空 </TD> <TD align=middle width=120>删除 </TD> </TR> <TR> <TD align=middle width=120> <INPUT width=60px> </TD> <TD align=middle width=120> <INPUT width=60px> </TD> <TD align=middle width=120>";

结果:
<TABLE id="TabData" border= "1" cellpadding="0" cellspacing="0" name="fsd"> <TBODY> <TR> <TD align="middle" width="120">字段名称 </TD> <TD align="middle" width="120">中文描述 </TD> <TD align="middle" width="120">字段类型 </TD> <TD align="middle" width="120">字段长度 </TD> <TD align="middle" width="120">不能为空 </TD> <TD align="middle" width="120">删除 </TD> </TR> <TR> <TD align="middle" width="120"> <INPUT width="60px"> </TD> <TD align="middle" width="120"> <INPUT width="60px"> </TD> <TD align="middle" width="120">
wumingbing_8027 2008-04-29
  • 打赏
  • 举报
回复
text = Regex.Replace(text, "=\\s*([^\\s\"]+)",
delegate(Match m)
{
return m.Value.ToString().Replace(m.Groups[1].Value.ToString(),"\"" + m.Groups[1].Value.ToString() + "\"");
});
michael555cdj 2008-04-29
  • 打赏
  • 举报
回复
(?<=\=)\w+(?=\s) 这个正则 可以匹配出 全部不带引号的 属性值
然后 自己写代码 替换了!!
gen06 2008-04-29
  • 打赏
  • 举报
回复
string s="<TABLE id=TabData border=1 cellpadding=\"0\" cellspacing=\"0\" name=\"fsd\">......"
string result=System.Text.RegularExpressions.Regex.Replace(s, @"(border\s*=\s*)(\d+)", "$1\"$2\"");
心情解码 2008-04-29
  • 打赏
  • 举报
回复
up
wumingbing_8027 2008-04-29
  • 打赏
  • 举报
回复
"<input[^>]+(>)"

return m.Value.ToString().Replace(m.Groups[1].Value.ToString(),"/"+m.Groups[1].Value.ToString());

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧