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

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

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

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

Print Len("Hello, world!")

Print Len(" Hello, world!")

Print Len("Hello, world! ")

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

 

Функция Описание
LTrim Удаляет пробелы в начале строки
RTrim Удаляет пробелы в конце строки
Trim Удаляет пробелы в начале и в конце строки

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

 

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

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

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

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

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

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

Private Sub Command1_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] Шеврон – маленький черный треугольник рядом с пиктограммой.