VB. NET, я не могу преобразовать escape-последовательности Unicode в текст - PullRequest
0 голосов
/ 10 июля 2020

Я смотрел много видео на YouTube, читал много решений в Google и Stack Overflow! Может ли кто-нибудь сказать мне, как я могу преобразовать escape-последовательности Unicode в текст?

Я пробовал это:

Dim f = System.Net.WebUtility.HtmlDecode("sa3444444d4ds\u0040outllok.com")
MsgBox(f) 

и это:

Dim f = System.Uri.UnescapeDataString("sa3444444d4ds\u0040outllok.com")
MsgBox(f)

и это:

Dim myBytes As Byte() = System.Text.Encoding.Unicode.GetBytes("sa3444444d4ds\u0040outllok.com")

Dim myChars As Char() = System.Text.Encoding.Unicode.GetChars(myBytes)
Dim myString As String = New String(myChars)
MsgBox(myString)

и это:

    Dim f = UnicodeToAscii("sa3444444d4ds\u0040outllok.com")

    MsgBox(f)

Public Function UnicodeToAscii(ByVal unicodeString As String) As String

    Dim ascii As Encoding = Encoding.ASCII
    Dim unicode As Encoding = Encoding.Unicode
    ' Convert the string into a byte array. 
    Dim unicodeBytes As Byte() = unicode.GetBytes(unicodeString)

    ' Perform the conversion from one encoding to the other. 
    Dim asciiBytes As Byte() = Encoding.Convert(unicode, ascii, unicodeBytes)

    ' Convert the new byte array into a char array and then into a string. 
    Dim asciiChars(ascii.GetCharCount(asciiBytes, 0, asciiBytes.Length) - 1) As Char
    ascii.GetChars(asciiBytes, 0, asciiBytes.Length, asciiChars, 0)
    Dim asciiString As New String(asciiChars)
    Return asciiString
End Function

1 Ответ

1 голос
/ 10 июля 2020

Вы можете использовать Regex.Unescape .

Например,

Dim s = "sa3444444d4ds\u0040outllok.com"
Console.WriteLine(Regex.Unescape(s))

выводит:

sa3444444d4ds@outllok.com

Благодарим Тима Патрика за то, что он показал это в статье журнала Visual Studio Magazine. Преодоление зависти к escape-последовательности в Visual Basi c и C#.

...