一次解码整个 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页面或长文本。
听起来你没有任何
办法提前知道一个字符串需要解码多少次,直到你得到你想要的结果,所以你将不得不使用循环或递归来获得想要的结果。 这里有一个递归函数来做到这一点:
function DecodeUntilUnchanged(string str)
{
string decoded = WebUtility.HtmlDecode(str);
if(decoded == str)
return str;
return DecodeUntilUnchanged(decoded);
}
你可以像这样使用它:
TextBox1.Text = DecodeUntilUnchanged(TextBox1.Text);