Знакомимся со строками
Создайте двухкнопочный проект с такой программой:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim a As Integer
a = 98
Debug.WriteLine(a)
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Dim b As String
b = "Привет всем!"
Debug.WriteLine(b)
End Sub
Сравним две процедуры.
Объявление Dim a As Integer говорит о том, что переменная a обязана иметь числовое значение, и поэтому в первой процедуре оператор a=98 записывает в ячейку a число 98.
Объявление Dim b As String говорит о том, что переменная b обязана иметь строковое (текстовое) значение. Это значит, что ее значением будет не число, а произвольная цепочка символов, например, Привет всем! или рпН2Н(+*fD6:u . Оператор b ="Привет всем!" записывает в ячейку b строку Привет всем! . Оператор Debug.WriteLine(b), поскольку он обязан всегда выводить на экран содержимое ячейки b, выведет на экран текст Привет всем!
Обратите внимание, что в окне кода текст должен браться в двойные кавычки, а в памяти он хранится без кавычек и на экран выводится без кавычек. И когда вы его вводите в текстовое поле или в InputBox, то тоже вводите без кавычек.
Информация в ячейке памяти под строковую переменную может в процессе выполнения программы меняться точно так же, как и в ячейке для числовой переменной. Например, при выполнении процедуры
Private Sub Button3_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button3.Click
Dim a As String
a = "Минуточку!" : Debug.WriteLine(a) : a = "Здравствуйте!" : a = "До свидания!" : Debug.WriteLine(a)
End Sub
в ячейке a будут по очереди появляться строки
Минуточку! Здравствуйте! До свидания!
а на экран будут выведены строки:
Минуточку!
До свидания!
Размеры ячейки под строковую переменную не фиксированы, они прямо зависят от размеров строки.
Операция &. Над строками, так же как и над числами, можно выполнять некоторые операции. Простейшая операция обозначается символом & и мы с ней знакомы – она просто соединяет строки в одну. Рассмотрим программу:
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
Dim S As String = "беда"
Dim T As String
T = "По" & S
Debug.WriteLine(T)
Debug.WriteLine(T & T & T)
Debug.WriteLine(T + T + T)
End Sub
Вот что она печатает:
Победа
ПобедаПобедаПобеда
ПобедаПобедаПобеда
Вы видите, что операция +
по отношению к строкам равнозначна операции &.
Строковые выражения и литералы. Встретившиеся нам выражения
"По" & S
T & T & T
"Объем = " & Format(V, "0.###")
и другие являются ни чем иным, как строковыми выражениями. По той простой причине, что в них производятся действия, результатом которых является строка. Конкретные взятые в двойные кавычки строки текста, которые мы видим в окне кода, будем называть строковыми литералами. Так, в приведенных выше строковых выражениях мы видим литералы "По", "Объем = ", "До свидания!" и другие. Строковые же выражения, как и любые другие выражения, не заключаются в двойные кавычки. В них заключаем только конкретные строковые литералы.
Операция & по отношению к числам. Если операцию & применить к числам, то она их «насильно» преобразует в строки и соединит, как привыкла, в одну строку. Рассмотрим программу:
Private Sub Button5_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button5.Click
Dim a As Integer = 1234
Debug.WriteLine("Здесь было " & 76 & a & a & 908 & " зайцев")
End Sub
Вот что она печатает:
Здесь было 7612341234908 зайцев
Разумеется, строка цифр 7612341234908 это просто строка символов и не имеет никакого отношения к реальному числу. Это просто бывшие числа, ставшие строками и затем соединенные вместе.
Задание 14.
Определите без компьютера, что напечатает следующая программа?:
Private Sub Button6_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button6.Click
Dim a As String = "Цикл"
a = a & a
Debug.WriteLine(a)
a = a & a
Debug.WriteLine(a & a & "Конец цикла")
End Sub
Пример. Строковую переменную можно задавать не только оператором присваивания, но и функцией InputBox:
Private Sub Button7_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button7.Click
Dim a As String
a = InputBox("Введите какое-нибудь слово")
Label1.Text = "Вы ввели слово " & a
End Sub
Пусть после нажатия на кнопку вы ввели слово Вперед. Вот результат в метке:
Вы ввели слово Вперед
Обратите внимание на пробел между буквой «о» и кавычкой в литерале "Вы ввели слово ". Пробел нужен для того, чтобы слова при выводе не сливались. Если бы его не было, результат был бы такой:
Вы ввели словоВперед