Преобразование массива в строку

Преобразовать массив в строку позволяет функция Join(). Элементы массива должны быть строками или значениями типа Variant, которые автоматически преобразуются в строку. Попытка передать в функцию, например, массив со значениями типа Integer приведет к ошибке. Формат функции:

<Строка> = Join(<Массив>[, <Разделитель>])

Если параметр <Разделитель> не указан, то в качестве разделителя используется пробел. Пример:

Dim Массив As Variant
Массив = Array("1", "2", "3", "4", "5")
Debug.Print Join(Массив)        ' 1 2 3 4 5
Debug.Print Join(Массив, "")    ' 12345
Debug.Print Join(Массив, ", ")  ' 1, 2, 3, 4, 5
Debug.Print Join(Массив, " - ") ' 1 - 2 - 3 - 4 - 5

Преобразование строки в массив

Функция Split(<Строка>[, <Разделитель>[, <Лимит>[, <Сравнение>]]]) разделяет строку на подстроки по указанному разделителю и добавляет их в массив. Если в параметре <Строка> указана пустая строка, то функция возвращает пустой массив. Если параметр <Разделитель> не указан, то в качестве разделителя используется символ пробела. Если в параметре <Лимит> задано число, то в массиве будет указанное количество подстрок. Если подстрок больше указанного количества, то последний элемент массива будет содержать остаток строки. По умолчанию параметр <Лимит> имеет значение -1, которое означает, что лимит не установлен. Пример:

Dim s As String, arr As Variant
s = "word1 word2 word3 word4"
arr = Split(s, " ")
Debug.Print Join(arr, "+") ' word1+word2+word3+word4
arr = Split(s, " ", 3)
Debug.Print Join(arr, "+") ' word1+word2+word3 word4
s = "word1-word2-word3-word4"
arr = Split(s, "-")
Debug.Print Join(arr, "+") ' word1+word2+word3+word4

Если разделитель не найден в строке, то массив будет состоять из одного элемента, представляющего исходную строку:

Dim s As String, arr As Variant
s = "word1 word2 word3 word4"
arr = Split(s, "8")
Debug.Print Join(arr, "+") ' word1 word2 word3 word4

Параметр <Сравнение> задает способ сравнения. Можно указать следующие константы или соответствующие им значения:

Если параметр <Сравнение> не указан, то по умолчанию сравнение зависит от значения инструкции Option Compare, которая должна быть расположена в самом начале модуля. Если инструкция имеет значение Binary (или инструкция не указана), то используется двоичное сравнение, а если Text— то текстовое сравнение. Пример:

Dim s As String, arr As Variant
s = "1w2W3w4"
arr = Split(s, "W", -1, vbBinaryCompare) ' Регистр учитывается
Debug.Print Join(arr, " ") ' 1w2 3w4
arr = Split(s, "W", -1, vbTextCompare) ' Регистр не учитывается
Debug.Print Join(arr, " ") ' 1 2 3 4
Предыдущая статья Все статьи Следующая статья