Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекция VB.doc
Скачиваний:
28
Добавлен:
04.03.2016
Размер:
2.54 Mб
Скачать

InStrRev(Исходная_Строка, Искомая_Строка [, Начальная_Позиция])

Основное отличие состоит в том, что параметр Начальная_Позиция,указывающий начальную позицию в исходной строке, с которой будет начат поиск, располагаетсяпослесамих строк, а не перед ними, как у функции InStr().

Пример: Вывести номера позиций на которых встречается буква «к».

Private Sub Command1_Click()

Text1.Text = "Обычное праздничное блюдо на пикнике - шашлык. Однако можно придумать и что-нибудь оригинальное (запечённую в углях рыбу или мясо, жаренную на вертеле индейку)."

S = Text1

N = InStr(S, "к")

N2 = InStr(N + 1, S, "к")

N3 = InStr(N2 + 1, S, "к")

N4 = InStr(N3 + 1, S, "к")

Text2.Text = N & ", " & N2 & ", " & N3 & ", " & N4

End Sub

Выборка части строки

Задача выборки части текста из исходной строки возникает довольно часто, например, для выделения фамилии из полного имени клиента или для разделения введенной пользователем информации на части для помещения их в соответствующей записи базы данных. Такого типа задачи решаются в Visual Basic очень просто, благодаря наличию функций перечисленных в таблице:

Функция

Описание

Left

Возвращает указанное количество символов с начала строки

Right

Возвращает указанное количество символов с конца строки

Mid

Возвращает указанное количество символов с середины строки

При вызове функций Left() иRight()нужно указать исходную строку и количество выбираемых из нее символов. Синтаксис операторов, в которых используются функцииLeft() иRight(), выглядит следующим образом.

Результат = Left$(ИсходнаяСтрока, ЧислоСимволов)

Результат = Right$(Исходная Строка, ЧислоСимволов)

При вызове данных функций значение параметра ЧислоСимволовдолжно быть больше нуля. Если оно равно нулю, возвращается строка нулевой длины. Если значение описываемого параметра больше длины исходной строки, возвращается вся исходная строка целиком.

Для выделения символов из произвольной части исходной строки используется функция Mid(). Принцип ее применения практически такой же, как и функцийLeft() иRight(), но за одним исключением. У функцииMid() предусмотрен еще один дополнительный параметр, с помощью которого вы можете выделить одну букву, слово или целое предложение из любой части исходной строки.

Функция Mid() имеет два обязательных аргумента и один дополнительный. Ее синтаксис выглядит следующим образом:

Результат = Mid(ИсходнаяСтрока, НачальнаяПозиция [, ЧислоСимволов])

В параметре НачальнаяПозиция указывается номер символа в исходной строке, с которого будет начинаться новая строка. Если значение данного параметра превосходит длину строки, возвращается строка нулевой длины. С помощью дополнительного параметраЧислоСимволов указывается количество символов, которые нужно извлечь из исходной строки. Если данный параметр опущен, возвращается часть строки, начиная с указанной позиции и до конца строки. Ниже приведены несколько примеров использования функцииMid().

printMid("Александр Пушкин", 11) ' Возвращается "Пушкин"

printMid("Александр Пушкин", 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

Удаление лишних пробелов

Большинство строк содержат пробелы, с помощью которых отделяются друг от друга отдельные слова, абзацы и др. Однако ничто не запрещает пользователю поставить несколько пробелов в начале и (или) конце исходной строки. Чаще всего эти "лишние" пробелы появляются в результате случайного нажатия клавиши <Пробел> перед или после ввода строки текста. Кроме того, дополнительные пробелы в конце строки появляются при использовании строк фиксированной длины, когда длина новой строки меньше, чем размер переменной, которой она присваивается.

Например, в результате выполнения приведенных ниже операторов будет напечатано разное значение функции Len(), хотя слова в исходной строке содержатся одни и те же.

Print Len("Hello, world!")

Print Len(" Hello, world!")

PrintLen("Hello,world! ")

Чаще всего лишние пробелы не причиняют никакого дополнительного беспокойства, за исключением того, что они напрасно занимают память. Однако, если вы попытаетесь объединить несколько строк, содержащих лишние пробелы в одну. результат, скорее всего, будет не таким, как вы ожидали.. Для решения подобных проблем в VisualBasicпредусмотрено несколько специальных функций, с помощью которых можно легко избавиться от ненужных пробелов. Они представлены в следующей таблице:

Функция

Описание

LTrim

Удаляет пробелы в начале строки

RTrim

Удаляет пробелы в конце строки

Trim

Удаляет пробелы в начале и в конце строки

Каждая из приведенных выше функций имеет одинаковый синтаксис.

Замена символов в строке

С помощью того же ключевого слова Midможно заменять, символы в исходной строке. Синтаксис использования данной функции будет несколько другой – ее имя указывается в левой части оператора присваивания, и называться она уже будет не функцией, а операторомMid.

Для замены одной строки другой, оператор Midиспользуется следующим образом:

Mid(ИсходнаяСтрока, НачальнаяПозиция[, ЧислоСимволов]) = НоваяСтрока

В данном случае вместо параметра Исходная_Строканужно подставить строку, в которой производится замена символов. Данный параметр должен быть только строковой переменной; литерал или строковую функцию использовать нельзя. Второй параметр—НачальнаяПозиция—определяет номер первого символа в исходной строке, с которого начнется замена. Данный параметр должен быть положительным целым числом. Необязательный параметрЧислоСимволовопределяет количество символов исходной строки, которые будут заменены. В правой части оператора присваивания указывается параметрНоваяСтрока.в котором содержится строка, заменяющая указанные символы исходной строки. Данный параметр может быть представлен литералом, строковой переменной или строковой функцией.

В результате выполнения оператора Midдлина исходной строки не меняется. Другими словами, если при замене новая строка не может целиком поместиться в исходной строке, она усекается по оставшейся длине исходной строки.

Пример: Составьте программу, заменяющую в слове Х все буквы "е" на "я". (Я несу в лесу сметану)

PrivateSubCommand1_Click()

x = InputBox("Введите слово")

Text1.Text = x

y = ""

For i = 1 To Len(x)

If Mid(x, i, 1) = "е" Then _

y = y + "я" Else y = y + Mid(x, i, 1)

Next i

Text2.Text = y

End Sub

Для замены одного символа в строке другим можно использовать функцию Replace следующим образом:

Replace (ИсходнаяСтрока, Заменяемая буква, Заменяющая буква = НоваяСтрока

Пример: Заменить в исходной строке символы «р»на «с».

Private Sub Command2_Click()

Dim S1 As String

Dim S As String

Text1.Text = "Обычное праздничное блюдо на пикнике - шашлык. Однако можно придумать и что-нибудь оригинальное (запечённую в углях рыбу или мясо, жаренную на вертеле индейку)."

S = Text1

Text2.Text = Replace(S, "р", "с")

End Sub

1Шеврон – маленький черный треугольник рядом с пиктограммой.

81