HttpUtility.HtmlDecode () кроме некоторых определенных строк в vb.net - PullRequest
0 голосов
/ 03 декабря 2018

На самом деле я хотел HTMLDecode текста с помощью функции HttpUtility.HtmlDecode (), и он корректно работает со всем текстом, но я хочу декодировать текст, за исключением некоторой конкретной строки.Как я могу это сделать?

В частности, я не хочу декодировать <и>

Допустим, моя строка - &lt; &amp; &gt;

HttpUtility.HtmlDecode(text) возвращает - < & >

Требуется вывод - &lt; & &gt;

1 Ответ

0 голосов
/ 03 декабря 2018

Вы можете заменить строки, которые вы не хотите менять, на то, что декодер не распознает, а затем вернуть их к исходному значению.Вы должны убедиться, что строка, которую вы заменяете, не является тем, что обычно можно найти в строке.

Public Function Convert1(ByVal str As String) As String

    str = str.Replace("&lt;", "{lt}")
    str = str.Replace("&gt;", "{gt}")

    str = HttpUtility.HtmlDecode(str)

    str = str.Replace("{lt}", "&lt;")
    str = str.Replace("{gt}", "&gt;")

    Return str
End Function

Другой вариант - разделить вашу строку и декодировать только ту часть, которую вы хотите.

Public Function Convert2(ByVal str As String) As String

    Dim parts() As String = Regex.Split(str, "(&lt;|&gt;)")

    For i As Integer = 0 To parts.Length - 1
        Console.WriteLine(parts(i))
        If parts(i) <> "&lt;" And parts(i) <> "&gt;" Then
            parts(i) = HttpUtility.HtmlDecode(parts(i))
        End If
    Next

    Return String.Join("", parts)
End Function

Это всего лишь пример, необходимо выполнить некоторую проверку и рефакторинг.

...