Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Глава 6(VBA).doc
Скачиваний:
3
Добавлен:
01.05.2025
Размер:
2 Мб
Скачать
☆

Работа со строками

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

Например:

Dim strA As String

stzA = "Строковая переменная"

Существует две разновидности строк:

Строки переменной длины. Данный тип используется по умолчанию, при этом длина объявленной строки может изменяться в

445

процессе выполнения программы, т. е. строка не занимает фиксиро­ванный объем памяти. В рассмотренном выше примере была ис­пользована строка переменной длины.

Строки постоянной длины. Используются в том случае, когда требуется заранее определить длину объявляемой строки, причем ее длина не может изменяться при выполнении программы, т. е. строка постоянной длины занимает фиксированный объем памя­ти. Объявляется строка постоянной длины так же, как и перемен­ная, но после служебного слова String указывается количество символов (т. е. байтов), которые она будет занимать.

Например:

Dim strA As String * 20

strA = "Строковая переменная"

При выполнении первой из указанных команд для строки strA в памяти будет выделено место в 20 байт.

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

Например:

Dim strA As String * 20

Dim strB As String * 10

Dim strC As String * 25

stxA = "Строковая переменная" ' Результат: "Строковая переменная"

strB = strA ' Результат: "Строковая "

strC = strA ' Результат: "Строковая переменная "

Для удаления лишних пробелов в начале и конце строки ис­пользуются следующие функции: LTrim, RTrim или Trim. Например:

Dim strA As String

Dim strB As String

strA = " Строковая переменная "

strB = LTrim(strA) ' Результат; "Строковая переменная "

446

strB = RTrim(strA) ' Результат: " Строковая переменная"

strB = Trim(strA) ' Результат: "Строковая переменная"

Таким образом, LTrim удаляет все лишние пробелы в начале строки, RTrim - все пробелы в конце строки, и, наконец, функ­ция Trim удаляет их как в начале, так и в конце строки.

При объединении двух и более строк используется операция, называемая конкатенацией, которая реализуется с помощью оператора &.

Например:

Dim strA As String

Dim strB As String

Dim strC As String

strA = "Строковая "

strB = "переменная"

strC = strA & strB ' Результат: "Строковая переменная"

Помимо оператора &, объединять строки можно также при помощи сложения: +, например:

strC = strA + strB

Такая операция будет верной в том случае, когда объединяе­мые величины являются строками. С другой стороны, при объе­динении числовой и строковой величин возникнет ошибка несов­падения типов.

Например:

Dim strA As String

Dim strB As Integer

Dim strC As String

strA = "X"

strB =1

strC = strA & strB ' •Результат: "XI"

strC = strA + strB ' Результат: ОШИБКА

447

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

Например:

Dim strA As String

Dim curB As Currency

Dim strC As String

strA = "X = "

curB = 45.77

strC = strA + Str(curB) ' Результат: "X = 45.77"

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

strC = strA + LTrim(Str(curB))

Для создания или добавления строки пробелов заданной дли­ны используется функция Space, параметром которой является задаваемое количество пробелов, например:

Dim strA As String

Dim strB As String

Dim strC As String

strA = "Строковая"

strB = "переменная"

strC = strA & Space(5) & strB ' Результат; "Строковая переменная"

В данном примере при помощи функции Space между объединяемыми строками было добавлено 5 пробелов.

В языке Visual Basic существует возможность изменения строки таким образом, чтобы все используемые в ней буквы были преобразованы либо в верхний регистр (ВСЕ ПРОПИСНЫЕ), либо в нижний (все строчные). Для этих целей используются, соответственно, функции UCase и LCase.

448

Например:

Dim strA As String

Dim strB As String

strA = "Строковая Переменная"

strB = Ucase(strA) ' Результат: "СТРОКОВАЯ ПЕРЕМЕННАЯ"

strB = LCase(strA) ' Результат: "строковая переменная"

Для того чтобы заменить какую-либо часть строки или опре­деленные символы, следует использовать функцию Replace. Например:

Dim strA As String

Dim strB As String

strA = "Строковая Переменная"

strB = Replace(strA, "овая", "а") ' Результат; " Строка Переменная"

strB = Replace(strA, "o", "O") ' Результат: " СтрОкОвая Переменная"

Кроме обязательных параметров - результирующей, заменяе­мой и заменяющей строк — могут также использоваться необяза­тельные параметры, а именно: позиция в строке для начала заме­ны и количество возможных изменений. Следует отметить, что при этом часть строки, которая расположена перед позицией на­чала замены, будет удалена.

Например:

strB = Replace(strA, "е", "Е", 10, 3) ' Результат: "ПЕрЕмЕнная"

strB = Replace(strA, "о", "О", 1, 1) ' Результат: " СтрОковая Переменная"

Для определения количества символов в строке применяется функция Len, при этом в качестве параметра указывается рассматриваемая строка.

Например:

Dim strA As String

Dim intA As Integer

strA = "Строковая переменная"

intA = Len(strA) ' Результат: 20

449

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

Например:

Dim bytA As Byte

Dim intA As Integer

Dim IngA As Long

Dim intR As Integer

intR = Len(bytA) ' Результат: 1

intR = Len(intA) ' Результат: 2

intR = Len(IngA) ' Результат: 4

Если в качестве параметра функции Len используется перемен­ная типа Variant, содержимое которой можно представить в виде строки, то результатом будет количество символов, содержащееся в ней.

Например:

Dim vntA

Dim intA As Integer

vntA = -15.68

intA = Len(vntA) ' Результат: 6

Нередко в программе возникает необходимость выделения из строковой переменной той или иной ее части. В этом случае сле­дует использовать одну из функций: Left, Right или Mid.

Left. Применяется для выделения подстроки в начале исход­ной строки. Формат данной функции следующий:

Left(строка, количество)

Результатом функции Left является строка с указанным ко­личеством символов, находящаяся в начале исходной строки.

Right. Используется при выделении подстроки в конце ис­ходной строки. Функция имеет такой формат:

Right(строка, количество)

Функция Right возвращает строку с указанным количеством символов, расположенную в конце исходной строки.

450

Mid. Применяется для выделения подстроки в середине ис­ходной строки. Данная функция имеет следующий формат:

Mid(строка, номер, [количество])

Результатом функции Mid является строка с указанным коли­чеством символов, находящаяся в исходной строке, начиная с определенного номера. Если количество символов не указывает­ся, то строка выделяется до конца, т. е. в этом случае Mid будет аналогом функции Right, но с другим параметром

(Right; количество = "сколько выделять";

Mid: номер = "откуда начинать").

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

Dim strA As String

Dim strB As String

strA = "Это строковая переменная"

strB = Left(strA, 3)

' Результат; "Это" strB = Right(strA, 10)

' Результат: "переменная" strB = Mid (strA, 5, 9)

' Результат; "строковая"