用c#更改字符串中文本内容的最简单方法是什么?
本文关键字:最简单 方法 是什么 文本 字符串 中文 | 更新日期: 2023-09-27 17:49:01
我有一个HTML字符串,看起来像这样:
<div id="control">
<a href="/xx/x">y</a>
<ul>
<li><a href="/C003Q/x" class="dw">x</a></li>
<li><a href="/C003R/xx" class="dw">xx</a></li>
<li><a href="/C003S/xxx" class="dw">xxx</a></li>
</ul>
</div>
我想把它改成如下:
<div id="control">
<a data-href="/xx/x" ><span>y</span></a>
<ul>
<li><a data-href="/C003Q/x" class="dw"><span>x</span></a></li>
<li><a data-href="/C003R/xx" class="dw"><span>xx</span></a></li>
<li><a data-href="/C003S/xxx" class="dw"><span>xxx</span></a></li>
</ul>
</div>
我听说过regex,但我不确定如何使用它来改变地址标签内的东西,并同时改变href。我是否需要使用正则表达式两次,我可以使用正则表达式改变<a ... >...</a>
的内部,或者有一个更简单的方法与c# ?
一般来说,Regex不适合解析HTML,除了众所周知的和结构良好的HTML(即。你确切地知道你要解析什么)。
你可以使用HTML解析器——HTML敏捷包是一个流行的选择,还有CsQuery。
什么是Html敏捷包(HAP)?
这是一个敏捷的HTML解析器,它构建一个读/写DOM,并支持普通的XPATH或XSLT(实际上您不必理解XPATH或XSLT就可以使用它,不用担心…)。它是一个。net代码库,允许你在"网络之外"进行解析。HTML文件。解析器对"现实世界"非常宽容。畸形的HTML。对象模型与System.Xml非常相似,但适用于HTML文档(或流)。
CsQuery - . c# jQuery Port for .NET 4
CsQuery是。net 4的jQuery端口。它实现了所有CSS2 &CSS3选择器,jQuery的所有DOM操作方法,以及一些实用方法。jQuery测试套件的大部分(从1.6.2开始)已经移植到c#。
可以使用正则表达式替换。使用圆括号捕获匹配的文本中的值,并使用$1
, $2
等。要使用替换字符串中的值:
str = Regex.Replace(
str,
"<a href='"(.+?)'" class='"dw'">(.+?)</a>",
"<a data-href='"$1'" class='"dw'"><span>$2</span></a>"
);
注意:如果HTML代码没有完全相同的形式,替换将不起作用。例如,如果锚标记中有另一个属性,或者如果属性顺序颠倒,则模式将不匹配。
如果您不想使用Regex
,您可以这样做:
string newString = oldString.Replace("dw'">", "dw'"><span>")
.Replace("</a", "</span></a");