Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Строки и символы.docx
Скачиваний:
21
Добавлен:
02.05.2019
Размер:
35.15 Кб
Скачать
      1. Символы (Char). Методы структуры Char

Переменную можно объявить специальным символьным типом – Char. Под символом мы понимаем любую букву, цифру, знак препинания или другой знак на клавиатуре и не только на клавиатуре.

В первом приближении можно считать, что символ – это строка длины 1. Объявим для примера две переменные:

Dim s As String = "Ш"

Dim c As Char = "Ш"

В большинстве случаев вследствие неявного преобразования типов эти две переменные ведут себя одинаково.

Методы структуры Char. В пространстве имен System имеется структура Char, обладающая рядом полезных методов для работы с символами. О них я уже говорил в Error: Reference source not found. Сейчас просто повторюсь:

Dim Символ As Char = "Ж"

Debug.WriteLine("Набран символ " & Символ)

Debug.WriteLine("Это цифра? " & Char.IsDigit(Символ))

Debug.WriteLine("Это буква? " & Char.IsLetter(Символ))

Debug.WriteLine("Правда ли, что это буква или цифра? " & Char.IsLetterOrDigit(Символ))

Debug.WriteLine("Это строчная буква? " & Char.IsLower(Символ))

Debug.WriteLine("Это заглавная буква? " & Char.IsUpper(Символ))

Debug.WriteLine("Это знак препинания? " & Char.IsPunctuation(Символ))

Debug.WriteLine("Это пробел? " & Char.IsSeparator(Символ))

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

Буква Ш имеет номер 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

Вот некоторые фрагменты из того, что будет распечатано этой процедурой:

!"#$%&'()*+,-./0123456789:;<=>?@

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

{|}~¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿À

БВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюяĀ

΁΂΃΄΅Ά·ΈΉΊ΋Ό΍ΎΏΐΑΒΓΔΕΖΗΘΙΚΛΜΝΞΟΠΡ΢ΣΤΥΦΧΨΩΪΫάέήίΰαβγδεζηθικλμνξοπ

ρςστυφχψωϊϋόύώϏϐϑϒϓϔϕϖϗϘϙϚϛϜϝϞϟϠϡϢϣϤϥϦϧϨϩϪϫϬϭϮϯϰϱϲϳϴϵ϶ϷϸϹϺϻϼϽϾϿЀ

ЁЂЃЄЅІЇЈЉЊЋЌЍЎЏАБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопр

стуфхцчшщъыьэюяѐёђѓєѕі

Вы видите здесь все цифры, знаки препинания, заглавные и строчные буквы латинского, греческого и русского алфавитов. А также видоизмененные латинские буквы для алфавитов некоторых стран Европы и мира. Если вы заберетесь дальше 1200-го символа, то увидите и арабскую вязь, и иероглифы, и другие алфавиты, и просто популярные значки:

ﵪ ﵫ ﵬ ﵭ ﵮ ༠༡༢༣༤༥༦༧༨༩ ༪ ༫ ༬ ༭ ༮ ༯ ༰ ༱ ༲ ༳

吁吂吃各吅吆吇合吉吊吋同名后吏吐向吒吓吔 ევზთიკლმნოპჟრსტუფქღყშჩცძწჭხჯჰჱჲჳჴ

☹☺☻☼☽☾☿♀♁♂♃♄♅♆♇♈♉♊♋♌♍♎♏♐♑♒♓♔♕♖♗♘♙♚♛♜♝♞♟

✖✗✘✙✚✛✜✝✞✟✠✡✢✣✤✥✦✧✨✩✪✫✬✭✮✯✰✱✲✳✴✵✶✷✸✹✺✻✼✽✾

✿❀❁❂❃❄❅❆❇❈❉❊❋ ♠♡♢♣♤♥♦♧♨♩♪♫♬♭♮♯

ASCII символы. Раньше переменная типа Char занимала в памяти 1 байт, и поэтому символов насчитывалось только 256. Они были сведены в так называемую ASCII-таблицу. Поскольку в нее нельзя было втиснуть все языки мира, то для разных стран символы таблицы со 128 по 255 могли быть разные. И сегодня мы можем по-старинке пользоваться ASCII-таблицей. В этом нам помогут две функции. Порядковый номер любого символа в ASCII-таблице нам сообщает функция Asc модуля Strings. Функция же Chr этого модуля наоборот – по номеру сообщает символ:

Функция

Результат

Пояснение

Asc ("Ы")

219

Буква Ы имеет номер 219

Chr (219)

Ы

Номер 219 соответствует букве Ы

Вот процедура, распечатывающая символы с 32-го по 255-й:

Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click

Dim Код As Long

For Код = 32 To 255

Debug.Write(Chr(Код))

Next

End Sub

Вот что будет распечатано этой процедурой:

!"#$%&'()*+,-./0123456789:;<=>?@

ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz

{|}~ЂЃ‚ѓ„…†‡€‰Љ‹ЊЌЋЏђ‘’“”•–—˜™љ›њќћџ ЎўЈ¤Ґ¦§Ё©Є«¬­®Ї°±Ііґµ¶·ё№є»јЅѕї

АБВГДЕЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯабвгдежзийклмнопрстуфхцчшщъыьэюя

Как видите, русские буквы (кириллица) расположены здесь совсем под другими номерами, чем в ипостаси Unicode символов.