一次解码整个 HTML 个实体
Decoding entire HTML entities at once
我想解码 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);
我想解码 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);