Строка как объект. Свойства и методы класса String
Строка – это не просто строка. Это объект. Объект класса String пространства имен System. Здесь та же ситуация, что и с массивами (Error: Reference source not found). Мы можем и не подозревать, что строка – объект, и тем не менее, успешно со строками работать.
Не путайте класс 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.
Определите без компьютера, что напечатает оператор
Debug.WriteLine(ChrW(AscW("Ю") + 1))
«Детская шифровка». Среди детей встречается игра, заключающаяся в зашифровке своей речи «для секретности» за счет вставки в произносимые слова какого-нибудь звукосочетания, например, «быр». Тогда вместо слова «корова» будет произнесено «кобырробырвабыр». Составьте программу, которая распечатывает любую строку из 6 букв, после каждой второй буквы вставляя «быр». Если получилось, то решите эту задачу для строки произвольной длины.