Декодирование всего объекта HTML одновременно
Я хочу декодировать HTML или тексты. Я использовал - с тем же результатом - эти функции:
- HtmlEntity.DeEntitize
- HttpUtility.HtmlDecode
- WebUtility.HtmlDecode
Например, когда я люблю декодировать Martian's atmosphere
, Я получил Martian's atmosphere
вместо Martian's atmosphere
,
И когда я использую этот код (для опыта), все в порядке (символы декодируются):
TextBox1.Text = "Martian's atmosphere"
For i = 0 To 2
TextBox1.Text = WebUtility.HtmlDecode(TextBox1.Text)
i += 1
Next
Проблема в том, что я не люблю использовать циклы, потому что иногда мне приходится декодировать полную HTML-страницу или длинные тексты.
Спасибо.
1 ответ
Решение
Похоже, у вас нет никакого способа заранее узнать, сколько раз нужно будет декодировать строку, пока вы не получите желаемый результат, поэтому вам придется использовать либо цикл, либо рекурсию для получения желаемого результат. Вот рекурсивная функция для этого:
function DecodeUntilUnchanged(string str)
{
string decoded = WebUtility.HtmlDecode(str);
if(decoded == str)
return str;
return DecodeUntilUnchanged(decoded);
}
Вы бы использовали это так:
TextBox1.Text = DecodeUntilUnchanged(TextBox1.Text);