ПОНЯТНО О Visual Basic NET (том 3)

       

Строка как объект Свойства и методы класса String


Строка – это не просто строка. Это объект. Объект класса String пространства имен System. Здесь та же ситуация, что и с массивами (15.6). Мы можем и не подозревать, что строка – объект, и тем не менее, успешно со строками работать.

Не путайте класс String с модулем Strings. Любая переменная (или литерал) строкового типа является специфическим экземпляром класса String, и чтобы воспользоваться его свойством или методом, вы просто пишете после имени переменной или литерала точку и за ней название свойства или метода, как мы делали это раньше.

Итак, строка обладает свойствами и методами своего класса.  Разберем их.

Прежде всего, строка представляет собой последовательность символов, пронумерованных, начиная с 0. Вы можете легко обращаться к каждому символу по его номеру (индексу):

Debug.WriteLine("Гастроном".Chars(3))             'Символ с индексом 3 в строке (т)

'Ищется первое вхождение символа "о" в  строку и находится его индекс (5):

Debug.WriteLine("Гастроном".IndexOf("о"))

'Ищется последнее вхождение символа "о" в  строку и находится его индекс (7):

Debug.WriteLine("Гастроном".LastIndexOf("о"))

Debug.WriteLine("Гастроном".Length)                       'Длина строки (9)

Вот что напечатает этот фрагмент:

т

5



7

9

Строкой легко заполнить символьный массив:

Dim Буквы() As Char                              'Объявляем массив символов

Буквы = "Гастроном".ToCharArray       'Заполняем его буквами слова "Гастроном"

Debug.WriteLine(Буквы(6))                     'Печатается буква  н

Вот еще несколько методов:

'Часть строки длиной 4, начиная с символа с индексом 3 (трон):

Debug.WriteLine("Гастроном".Substring(3, 4))

Debug.WriteLine("Гастроном".StartsWith("Га"))      'Правда ли, что "Гастроном" начинается с "Га"

Debug.WriteLine("Гастроном".EndsWith("ном"))    'Правда ли, что "Гастроном" заканчивается на "ном"


Вот что напечатает этот фрагмент:

трон

True

True

Вот методы, видоизменяющие строку:

Debug.WriteLine("Гастроном".Remove(2, 6))          'Убрать из строки 6 символов, начиная с номера 2

'Вставить в строку перед символом номер 2 другую строку ("лактический а"):

Debug.WriteLine("Гастроном".Insert(2, "лактический а"))

Debug.WriteLine("Победа".Replace("бед", "годк"))   'Заменить в строке одну часть ("бед")  на другую ("годк")

Вот что напечатает этот фрагмент:

Гам

Галактический астроном

Погодка

Если строка состоит из частей, разделенных пробелами, запятыми или другими символами, этими частями легко можно заполнить массив строк:

Dim Предложение As String = "Маша ела кашу"

Dim Слова_в_предложении() As String        'Объявляем массив строк

'Заполняем его частями строки Предложение, разделенными пробелами (" "):

Слова_в_предложении = Предложение.Split(" ")

Dim Список_покупок As String = "хлеб,молоко,кофе"

Dim Покупки() As String                                 'Объявляем массив строк

'Заполняем его частями строки Список_покупок, разделенными запятыми (","):

Покупки = Список_покупок.Split(",")

После выполнения этого фрагмента массив Слова_в_предложении будет состоять из строк  "Маша", "ела", "кашу", а массив Покупки будет состоять из строк  "хлеб", "молоко", "кофе".

Кроме рассмотренных методов у класса String есть еще методы, которые дублируют работу функций модуля Strings.

Задание 8.    

Определите без компьютера, что напечатает оператор

        Debug.WriteLine(ChrW(AscW("Ю") + 1))

Задание 9.    

«Детская шифровка». Среди детей встречается игра, заключающаяся в зашифровке своей речи «для секретности» за счет вставки в произносимые слова какого-нибудь звукосочетания, например, «быр». Тогда вместо слова «корова» будет произнесено «кобырробырвабыр». Составьте программу, которая распечатывает любую строку из 6 букв, после каждой второй буквы вставляя «быр». Если получилось, то решите эту задачу для строки произвольной длины.



Задание 10.          

Давайте поставим задачу шифрования текста более серьезно. Имеется строка текста. Требуется написать программу, которая зашифровывала бы ее в другую строку. Способов шифровки вы можете придумать сколько угодно. Попробуйте такой – заменять каждый символ текста символом, следующим по порядку в алфавите (точнее – в последовательности Unicode символов). Тогда изречение Козьмы Пруткова

Взирая на солнце, прищурь глаза свои, и ты смело разглядишь в нем пятна.

должно превратиться вот во что:

Гийсб?!об!тпмочж-!рсйъфсэ!дмбиб!тгпй-!й!уь!тнжмп!сбидм?ейщэ!г!ожн!р?уоб/

Составьте, пожалуйста, и программу дешифровки. Когда вы познакомитесь с файлами, вы сможете уже зашифровывать и дешифровывать не отдельные строки, а целые тексты. В том числе и ваши программы.

Совет: Если задача требует сложных преобразований строки и ее символов, то обычно начинают с того, что объявляют массив символов и заполняют его символами исходной строки. Теперь с ними удобней работать. В конце же из нужным образом преобразованного массива снова собирают строку. В нашем случае сложностей нет, поэтому в ответе эта задача решается другим, более коротким способом: работа идет непосредственно над символами строки.


Содержание раздела