Переменную можно объявить специальным символьным типом – Char. Под символом мы понимаем любую букву, цифру, знак препинания или другой знак на клавиатуре и не только на клавиатуре.
В первом приближении можно считать, что символ – это строка длины 1. Объявим для примера две переменные:
Dim s As String = "Ш"
Dim c As Char = "Ш"
В большинстве случаев вследствие неявного преобразования типов эти две переменные ведут себя одинаково.
Методы структуры Char. В пространстве имен System имеется структура Char, обладающая рядом полезных методов для работы с символами. О них я уже говорил в 14.3.1. Сейчас просто повторюсь:
Debug.WriteLine("Превратить в строчную " & Char.ToLower(Символ))
Debug.WriteLine("Превратить в заглавную " & Char.ToUpper(Символ))
Вот что напечатает этот фрагмент:
Набран символ Ж
Это цифра? False
Это буква? True
Правда ли, что это буква или цифра? True
Это строчная буква? False
Это заглавная буква? True
Это знак препинания? False
Это пробел? False
Превратить в строчную ж
Превратить в заглавную Ж
Unicode символы. Переменная типа Char нынче занимает в памяти 2 байта, и поэтому в современной Windows насчитывается 65536 символов. Это так называемые Unicodeсимволы. Они пронумерованы от 0 до 65535. Порядковый номер любого Unicode символа нам сообщает функцияAscWмодуля Strings. Функция же ChrWэтого модуля наоборот – по номеру сообщает символ:
Функция
Результат
Пояснение
AscW("Ш")
Буква Ш имеет номер 1064
ChrW(1064)
Ш
Номер 1064 соответствует букве Ш
Вот процедура, распечатывающая символы с 0-го по 1200-й, при этом по 64 символа в строку печати:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim Код As Long
Dim Символ As Char
For Код = 0 To 1200
Символ = ChrW(Код)
Debug.Write(Символ)
If Код Mod 64 = 0 Then Debug.WriteLine("")
Next
End Sub
Вот некоторые фрагменты из того, что будет распечатано этой процедурой:
Вы видите здесь все цифры, знаки препинания, заглавные и строчные буквы латинского, греческого и русского алфавитов. А также видоизмененные латинские буквы для алфавитов некоторых стран Европы и мира. Если вы заберетесь дальше 1200-го символа, то увидите и арабскую вязь, и иероглифы, и другие алфавиты, и просто популярные значки:
ASCII символы. Раньше переменная типа Char занимала в памяти 1 байт, и поэтому символов насчитывалось только 256. Они были сведены в так называемую ASCII-таблицу. Поскольку в нее нельзя было втиснуть все языки мира, то для разных стран символы таблицы со 128 по 255 могли быть разные. И сегодня мы можем по-старинке пользоваться ASCII-таблицей. В этом нам помогут две функции. Порядковый номер любого символа в ASCII-таблице нам сообщает функцияAscмодуля Strings. Функция же Chrэтого модуля наоборот – по номеру сообщает символ:
Функция
Результат
Пояснение
Asc("Ы")
Буква Ы имеет номер 219
Chr(219)
Ы
Номер 219 соответствует букве Ы
Вот процедура, распечатывающая символы с 32-го по 255-й:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click