Выборка части строки
Задача выборки части текста из исходной строки возникает довольно часто, например, для выделения фамилии из полного имени клиента или для разделения введенной пользователем информации на части для помещения их в соответствующей записи базы данных. Такого типа задачи решаются в Visual Basic очень просто, благодаря наличию функций перечисленных в таблице:
Функция | Описание |
Left | Возвращает указанное количество символов с начала строки |
Right | Возвращает указанное количество символов с конца строки |
Mid | Возвращает указанное количество символов с середины строки |
При вызове функций Left() и Right ()нужно указать исходную строку и количество выбираемых из нее символов. Синтаксис операторов, в которых используются функции Left () и Right (), выглядит следующим образом.
Результат = Left$(ИсходнаяСтрока, ЧислоСимволов)
Результат = Right$(Исходная Строка, ЧислоСимволов)
При вызове данных функций значение параметра ЧислоСимволов должно быть больше нуля. Если оно равно нулю, возвращается строка нулевой длины. Если значение описываемого параметра больше длины исходной строки, возвращается вся исходная строка целиком.
Для выделения символов из произвольной части исходной строки используется функция Mid (). Принцип ее применения практически такой же, как и функций Left () и Right (), но за одним исключением. У функции Mid() предусмотрен еще один дополнительный параметр, с помощью которого вы можете выделить одну букву, слово или целое предложение из любой части исходной строки.
Функция Mid () имеет два обязательных аргумента и один дополнительный. Ее синтаксис выглядит следующим образом:
Результат = Mid(ИсходнаяСтрока, НачальнаяПозиция [, ЧислоСимволов])
В параметре НачальнаяПозиция указывается номер символа в исходной строке, с которого будет начинаться новая строка. Если значение данного параметра превосходит длину строки, возвращается строка нулевой длины. С помощью дополнительного параметра ЧислоСимволов указывается количество символов, которые нужно извлечь из исходной строки. Если данный параметр опущен, возвращается часть строки, начиная с указанной позиции и до конца строки. Ниже приведены несколько примеров использования функции Mid ().
print Mid("Александр Пушкин", 11) ' Возвращается "Пушкин"
print Mid("Александр Пушкин", 11, 2) ' Возвращается "Пу"
Пример: Выделить в строке 2-3 слова, являющиеся подстрокой этой строки
Private Sub Command2_Click()
Dim S1 As String
Dim S As String
Text1.Text = "Обычное праздничное блюдо на пикнике - шашлык. Однако можно придумать и что-нибудь оригинальное (запечённую в углях рыбу или мясо, жаренную на вертеле индейку)."
S = Text1
N1 = Mid(S, 5, 2)
N2 = Mid(S, 61, 3)
N3 = Mid(S, 100, 3)
Text2.Text = N1 + ", " + N2 + ", " + N3
End Sub
С помощью функции MID можно подсчитать количество символов встречающихся в тексте.
Пример. Составьте программу, определяющую, сколько раз встречается в слове буква "а". Например: шалаш Þ 2 лось Þ 0
Private Sub Command1_Click()
x = InputBox("Введите слово")
Text1.Text = x
N = 0 'счетчик количества букв а
For i = 1 To Len(x)
If Mid(x, i, 1) = "а" Then N = N + 1
Next i
If N = 0 Then
Text2.Text = "В слове нет букв а"
Else
Text2.Text = N
End If
End Sub
В противном случае
Пример. Составьте программу, выясняющую, какая из букв "а" или "о" встречается в слове Х чаще.
Private Sub Command1_Click()
x = InputBox("Введите слово")
Text1.Text = x
Счет_a = 0
Счет_o = 0
For i = 1 To Len(x)
If Mid(x, i, 1) = "а" Then Счет_a = Счет_a + 1
If Mid(x, i, 1) = "о" Then Счет_o = Счет_o + 1
Next i
If Счет_a = 0 And Счет_o = 0 Then
Text2.Text = "В слове нет букв а или о"
ElseIf Счет_a > Счет_o Then
Text2.Text = "а - встречается чаще"
ElseIf Счет_a < Счет_o Then
Text2.Text = "o - встречается чаще"
ElseIf Счет_a = Счет_o And Счет_a <> 0 Then _
Text2.Text = "одинаково часто встречаются а и о"
End IfEnd Sub
Пример: Определить, какой процент букв в тексте занимает буква «р»
Private Sub Command1_Click()
Dim S As String
Dim i As Integer
Text1.Text = "Различные буквы "
S = Text1
l = 0
For i = 1 To Len(S)
If Mid(S, i, 1) = "р" Then l = l + 1
w = (Len(S) / 100) * l
o = Int(w)
Text2.Text = o
Next i
End Sub