Декодирование всего объекта 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);
Другие вопросы по тегам