一次解码整个 HTML 实体

本文关键字:HTML 实体 解码 一次 | 更新日期: 2023-09-27 18:35:06

我想解码HTML或文本。我使用了 - 具有相同的结果 - 此功能:

  • HtmlEntity.DeEntitize
  • HttpUtility.HtmlDecode
  • WebUtility.HtmlDecode

例如,当我喜欢解码Martian's atmosphere时,我会得到Martian's atmosphere而不是Martian's atmosphere

当我使用此代码(用于exp)时,一切都正确(字符被解码):

    TextBox1.Text = "Martian's atmosphere"
    For i = 0 To 2
        TextBox1.Text = WebUtility.HtmlDecode(TextBox1.Text)
        i += 1
    Next

问题是我不喜欢使用循环,因为有时我必须解码完整的HTML页面或长文本。

一次解码整个 HTML 实体

听起来你没有任何

办法提前知道一个字符串需要解码多少次,直到你得到你想要的结果,所以你将不得不使用循环或递归来获得想要的结果。 这里有一个递归函数来做到这一点:

function DecodeUntilUnchanged(string str)
{
    string decoded = WebUtility.HtmlDecode(str);
    if(decoded == str)
       return str;
    return DecodeUntilUnchanged(decoded);
}

你可以像这样使用它:

TextBox1.Text = DecodeUntilUnchanged(TextBox1.Text);