#vb.net #encoding #character-encoding #constants
#vb.net #кодирование #кодировка символов #константы
Вопрос:
У меня есть этот код, написанный на c #, и он действителен и работает.
public const char NBSP = 'u00A0';
По некоторым причинам мне нужно написать этот метод в VB.net . Я пробовал эти:
1.
Public Const NBSP As Char = "u00A0"
Ошибка: Option Strict On disallows implicit conversions from 'String' to 'Char'
2.
Public Const NBSP As Char = "u00A0"c
Ошибка: Character constant must contain exactly one character.
3.
Public Const NBSP As Char = amp;HA0 'Or 0x00A0
Ошибка: целочисленные значения не могут быть преобразованы в символ.
Примечание: я не могу использовать ChrW()
функцию. Ни Convert.ToChar()
то, ни другое, поскольку это Const . Одним из решений может быть удаление ключа Const, но для меня это выглядит некрасиво.
Я думаю, что мне следует использовать String вместо Char тип данных. Но не уверен, может ли это вызвать какие-либо проблемы?
Public Const NBSP As String = "u00A0"
Есть предложения?
Ответ №1:
Разные методы.
Используя целое число для сохранения значения, затем преобразуйте его с char
помощью ChrW():
Dim nbs1 As Integer = amp;HA0
Console.WriteLine("NBS" amp; New String({ChrW(nbs1)}))
Использование массива байтов и вызов Encoding .Юникод.getString() для преобразования массива байтов в строку. Обратите внимание, что порядок байтов инвертирован:
Dim nbs2 As Byte() = {amp;HA0, amp;H0}
Console.WriteLine("NBS" amp; Encoding.Unicode.GetString(nbs2))
Использование регулярных выражений.Unescape() для преобразования символа, экранированного в Юникоде «uXXXX», в строку:
Dim nbs3 As String = "u00A0"
Dim nbs4 = "NBS" amp; Regex.Unescape(nbs3)
Console.WriteLine(nbs4)