【问题标题】:Most efficient way to replace HTML special entities to custom string将 HTML 特殊实体替换为自定义字符串的最有效方法
【发布时间】:2017-03-29 05:16:15
【问题描述】:

我想将ALL HTML special entities 之类的> < 替换为自定义字符串。

假设我有以下字符串:

string str = "<div>&gt;hello&lt;</div>";

和方法: Method(string str, string replaceStr)

调用Method(str, ":)")后的结果应该是

<div>:)hello:)</div>

问题是特殊字符太多,我想知道最有效的方法是什么?

编辑:

String.Replace 不会做我的工作,使用 Regex 解析 HTML 并不是一个很好的方法。

由于不喜欢这个问题,可能没有任何干净的解决方案,因此我决定采用以下算法:

  1. 使用有效的 HTML 特殊字符创建 txt 文件(如 &amp;para;)
  2. 将文件解析为字符串数组
  3. 感谢 HtmLagilityPack 解析 HTML 并获取原始文本并替换所有实体。

我知道这对于大的 html 字符串并不是很有效,但它现在应该可以工作了。

【问题讨论】:

  • String.Replace() 看起来很有希望。
  • 我的意思是所有这些实体。我的错。我已经编辑了问题。
  • Regex.Replace(str, @"&amp;\p{L}+;", ":)")?这可能会过火。您需要评估匹配的文本是否是真实实体。

标签: c# string


【解决方案1】:

你可以试试:

        string str = "<div>&gt;hello&lt;</div>";
        string output = Regex.Replace(str, "&gt;|&lt;", ":)");

你也可以使用 HtmlDecode

        string str = "<div>&gt;hello&lt;</div>";
        string output = WebUtility.HtmlDecode(str);

【讨论】:

  • 不要使用正则表达式,WebUtility 是正确的答案
  • 或HttpUtility.HtmlDecode
猜你喜欢
  • 2019-03-20
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
  • 1970-01-01
  • 2014-05-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多