后端一个字段中保存的html字符串,要求用c#的正则表达式去掉html字符串中的table、tr、td这三个标签里的width属性
一楼正解,用正则去处理字符串里的节点属性,不仅麻烦,不确定性很大。
我这里使用了NSoup来处理html字符串里的地址,当然还有其他方法:
//如果出现中文乱码转一下
String HtmlString = Encoding.GetEncoding("gb2312").GetString(html);
NSoup.Nodes.Document doc = NSoup.NSoupClient.Parse(HtmlString);
//这里是根据class获取到节点集合
Elements lists = doc.GetElementsByClass("citytr");
foreach (Element element in lists)
{
//这里是获取首个子节点里面的集合
Element elements_code = element.Children[0];
Element elements_name = element.Children[1];
if (elements_code.Children.Count > 0)
{
elements_code = elements_code.Children[0];
elements_name = elements_name.Children[0];
}
string newurls = "";
if (elements_code.HasAttr("href")) {
string thisUrl = dt.Rows[i]["Urls"].ToString();
newurls = thisUrl.Substring(0, thisUrl.LastIndexOf('/') + 1) + elements_code.Attr("href");
}
......
}
这个思路不错
别用正则去,直接用XML来去width方便多了,正则各种问题和不全