Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОСНОВЫ ОФИСНОГО ПРОГРАММИРОВАНИЯ И ЯЗЫК VBA - 2....doc
Скачиваний:
79
Добавлен:
17.12.2018
Размер:
1.62 Mб
Скачать

Сборка элементов массива в строку. Функция Join

Функция Join решает обратную задачу, - она восстанавливает строку по ее элементам, хранящимся в массиве, добавляя разделители в момент их объединения. Ее синтаксис:

Join(sourcearray[, delimiter])

Параметры ее понятны без особых пояснений. Заметим, что если необязательный аргумент delimiter опущен, то элементы разделяются пробелами. В качестве примера, приведем обратную сборку сложного предложения:

Public Sub SplitAndJoin()

'В этой процедуре сложное предложение разделяется на простые

'А затем после обработки строка восстанавливается

'Объявляем динамический массив

Dim Simple() As String, i As Byte

Dim Simple1() As String, Res As String

'Размерность массива Simple устанавливается автоматически

'в соответствии с размерностью массива, возвращаемого функцией Split

Simple = Split("А это пшеница, которая в темном чулане хранится в доме, " _

& "который построил Джек", ", ")

'Создаем новый массив

ReDim Simple1(1 To UBound(Simple) + 2)

Simple1(1) = "А это веселая птица - синица"

Simple1(2) = "которая часто ворует пшеницу"

For i = 3 To UBound(Simple1)

Simple1(i) = Simple(i - 2)

Next i

'Создаем строку из массива Simple1

Res = Join(Simple1, ", ")

Debug.Print Res

End Sub

Вот результат отладочной печати:

А это веселая птица - синица, которая часто ворует пшеницу, которая в темном

чулане хранится в доме, который построил Джек

Фильтрация элементов массива. Функция Filter

Функция Filter является одним из вариантов поиска по образцу среди элементов массива. Здесь не требуется точного совпадения элемента и образца, достаточно, чтобы строка - образец содержалась в строке, заданной элементом массива. Поскольку совпадений может быть достаточно много, то результатом является массив отфильтрованных элементов. Некоторые детали будут пояснены при описании аргументов функции Filter. Вот ее синтаксис:

Filter(sourcearray, match[, include[, compare]])

Ее параметры имеют следующий смысл:

  • sourcearray - одномерный массив, элементы которого являются строками. Он может быть получен, например, как результат расщепления строки в массив.

  • match - образец поиска. Строка, вхождение которой ищется в каждом элементе исходного массива.

  • include - необязательный аргумент булевого типа. По умолчанию имеет значение True, означающее, что элементы, удовлетворяющие образцу, входят в результирующий массив. Если задано значение False, то результирующий массив составляется из элементов, не удовлетворяющих образцу.

  • compare - имеет обычный смысл.

В качестве результата возвращается массив отфильтрованных элементов.

Наш пример будет представлять расширенный вариант уже приводившейся процедуры SplitAndJoin:

Public Sub SplitAndJoin()

'В этой процедуре сложное предложение разделяется на простые

'А затем после обработки строка восстанавливается

'Здесь же демонстрируется фильтрация элементов массива

'Объявляем динамический массив

Dim Simple() As String, i As Byte

Dim Simple1() As String, Res As String

Dim Simple2() As String

'Размерность массива Simple устанавливается автоматически

'в соответствии с размерностью массива, возвращаемого функцией Split

Simple = Split("А это пшеница, которая в темном чулане хранится в доме, " _

& "который построил Джек", ", ")

'Создаем новый массив

ReDim Simple1(1 To UBound(Simple) + 2)

Simple1(1) = "А это веселая птица - синица"

Simple1(2) = "которая часто ворует пшеницу"

For i = 3 To UBound(Simple1)

Simple1(i) = Simple(i - 2)

Next i

'Создаем строку из массива Simple1

Res = Join(Simple1, ", ")

Debug.Print Res

'Фильтрация элементов массива

Simple2 = Filter(Simple1, "котор")

Res = Join(Simple2, ", ")

Debug.Print Res

Simple2 = Filter(Simple1, "котор", False)

Res = Join(Simple2, ", ")

Debug.Print Res

End Sub

Пример 8.3. (html, txt)

Вот результаты отладочной печати:

А это веселая птица - синица, которая часто ворует пшеницу, которая в темном

чулане хранится в доме, который построил Джек

которая часто ворует пшеницу, которая в темном чулане хранится в доме,

который построил Джек

А это веселая птица - синица