一次解码整个HTML实体

时间:2016-02-17 14:21:10

标签: c# vb.net html-agility-pack html-entities urldecode

我想解码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页面或长文本。

感谢' S

1 个答案:

答案 0 :(得分:1)

听起来你没有任何方法事先知道字符串需要解码多少次才能得到你想要的结果,所以你将不得不使用循环或递归来得到想要的结果。这是一个递归函数:

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

你会这样使用它:

TextBox1.Text = DecodeUntilUnchanged(TextBox1.Text);