Использование специальных символов
Любая строка состоит из набора отдельных символов. Каждый из этих символов имеет соответствующих 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 ‘передача строки без лишних пробелов в текстовое поля
