Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лек 13 VB Операции со строками.doc
Скачиваний:
3
Добавлен:
09.11.2019
Размер:
100.35 Кб
Скачать

Использование специальных символов

Любая строка состоит из набора отдельных символов. Каждый из этих символов имеет соответствующих ASCII-код. ASCII-коды используются при выполнении арифметических операций со строками либо для представления непечатаемых символов. Для преобразования ASClI-кода в соответствующий символ используется функция Chr, синтаксис которой имеет вид:

Function Chr$ ( CharCode As Long ) As String

Например, приведенные ниже операторы выполняют одно и то же действие – печатают строку HELLO:

Print "HELLO"

Print Chr$ ( 72 ) & Chr$ ( 69 ) & Chr$ ( 76 ) & Chr$ ( 76 ) & Chr$ ( 79 )

Приведенный выше пример с печатью слова HELLO является скорее показательным, чем по­лезным, поскольку, зачем использовать такое количество функций Chr, если можно непосредственно набрать строку " HELLO" в тексте программы. Однако бывают случаи, когда без данной функции просто нельзя обойтись, например, если вы хотите напечатать текст в нескольких строках. Тогда для представления служебных символов используется функция Chr, как показано в следующем примере:

Print "Строка 1" & Chr$ ( 13 ) & Chr$ ( 10 ) & "Строка 2"

Комбинация символов возврата каретки и перевода строки заслуживает особого внимания. Она используется в программах повсеместно для принудительного перехода текста на новую строку, который должен отображаться в диалоговых окнах и текстовых полях. Поэтому специально для нее в Visual Basic создана константа vbCrLf, при использовании которой предыдущую строку кода можно переписать следующим образом:

Print "Строка 1" .& VbCrLf & "Строка 2"

Функция Chr часто применяется для помещения в строку текста двойных кавычек:

Print Chr$ ( 34 ) & "Этот текст будет напечатан в кавычках" & Chr$ ( 34 )

Синтаксис функции Asc имеет вид:

Function Asc ( S As String ) As Integer

Функция Asc выполняет обратную задачу – она конвертирует символ в соответствующий ему ASClI-код, как показано ниже на примере.

Print Asc ("A") ' Будет напечатано число 65

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

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

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

Mid ( S As String , Start As Long [ , Length As Long ] ) = NewString

В данном случае вместо параметра S нужно подставить строку, в которой производится замена символов. Данный параметр должен быть только строковой переменной; литерал или строковую функцию использовать нельзя. Второй параметр Start определяет номер первого символа в исходной строке, с которого начнется замена. Данный параметр должен быть положительным целым числом. Необязательный параметр Length определяет количество символов исходной строки, которые будут заменены. В правой части оператора присваивания указывается параметр NewString, в котором содержится строка; заменяющая указанные символы исходной строки. Данный параметр может быть представлен литералом, строковой переменной или строковой функцией.

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

Пример: Преобразование первой буквы в верхний регистр, остальных – в нижний

Dim S as String , W as String

S = ”сМешаНый РеГистр”

W = LCase$ ( S )

Mid ( W , 1 ) = Ucase ( Left$ ( S , 1 ) )

В Visual Basic 6.0 включена новая функция Replace, предназначенная для выполнения поиска и замены символов в строке. Данная функция возвращает строку символов, которая была заменена. Ниже приведен синтаксис функции Replace:

Function Replace ( S As String , Find As String , Replace As String , [ Start As Long = 1 ] , [ Count As Long = -1 ] , [ Compare As VbCompareMethod = vbBinaryCompare ] ) As String

Описываемая функция заменяет в программе две функции – Mid и InStr. При вызове функции Replace нужно указать строку символов Find, которая будет заменяться в исходной строке S, и новую строку Replace, которой будет заменяться найденная строка символов. Необязательный параметр Start указывает позицию, с которой будет осуществлён поиск и замена символов. Если этот параметр не указан, то поиск и замена символов будет выполнен во всей строке. Необязательный параметр Compare определяет, будет ли различаться регистр символов во время поиска.

Пример: Удаление лишних пробелов из всей строки, если слова разделены более чем одним пробелом

Dim S as String

S = txt.Text ‘считывание строки из текстового поля

Do ‘начало цикла поиска и замены

S = Replace(S, ”UU”, ”U”) ‘заменяем два пробела на один пробел

Loop Until InStr(S,”UU”) = 0 ‘выйти из цикла, если в строке нет двух пробелов подряд

txt.Text = S ‘передача строки без лишних пробелов в текстовое поля