Поиск текста в строке

Изменение регистра символов в строке

Для изменения регистра символов в строке предусмотрены две специальные функции: UCase () и LCase (). Функция UCase () возвращает переданную ей в качестве аргумента строку, все символы которой преобразованы в верхний регистр. Функция LCase () выполняет обратную задачу, конвертирует символы исходной строки в нижний регистр.

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

Синтаксис этих команд следующий:

Строка2 = UCase ( Строка1 );

Строка3 = LCase (Строка1).

Где Строка1 может быть набрана как прописными так и строчными буквами, Строка2 – результат работы функции UСase – строка, содержащая только прописные буквы, а Строка3 – результат работы функции LСase – строка, содержащая только строчные буквы.

Например:

UCase ("Visual Basic") возвращает " Visual Basic ";

LCase ("Visual Basic") возвращает " visual basic "

 

При работе со строками зачастую нужно выяснить, не встречается ли заданное слово, фраза или любая другая последовательность символов в некоторой строке, и если — да. то в каком именно месте. В Visual Basic предусмотрены средства поиска одной строки в другой. С их помощью можно создавать программы для поиска нужных слов в тексте, а также для их последующей замены другими словами. Например, может понадобиться в тексте какого-нибудь документа заменить слово текст словом строка.

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

НомерПервогоСимвола = InStr(ИсходнаяСтрока, ИскомаяСтрока)

Например, в результате выполнения строки кода

Print InStr('Я встречу вас во вторник", "вас")

будет напечатано число 11, поскольку слово вас расположено в исходной строке с 11 позиции от начала.

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

НомерПервогоСимвола = InStr(НачальнаяПозиция, ИсходнаяСтрока, ИскомаяСтрока)

Например, в результате выполнения строки кода

Print Instr(7,"KTO не работает, тот ест", "е")

будет напечатано число 14, несмотря на то, что первая буква е встречается в данной фразе на 6-й позиции. Причина состоит в том. что мы заказали поиск символа е в строке, начиная с 7-й позиции.

Еще один необязательный параметр определяет, будет ли выполняться поиск без учета или с учетом регистра букв. В последнем случае одноименные строчные и прописные буквы будут восприниматься как совершенно разные символы. Если установить значение данного параметра равным 0 (принято по умолчанию), будет выполнен поиск с учетом регистра букв. Чтобы выполнить поиск без учета регистра букв, присвойте данному параметру значение 1. Синтаксис функции InStr (), для выполнения поиска без учета регистра букв выглядит следующим образом:

НомерПервогоСимвола = InStr(НачальнаяПозиция, ИсходнаяСтрока, ИскомаяСтрока, 1)

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

Для выполнения поиска в обратном направлении в Visual Basic предусмотрена еще одна функция, которая называется InStrRev(). Принцип ее работы совпадает с функцией InStr (), только синтаксис немного отличается:

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