Основы офисного программирования и язык VBA

         

Преобразование строки в массив. Функция Split


Предполагается, что исходная строка состоит из элементов (подстрок), разделенных специальными символами - разделителями. Функция Split возвращает одномерный массив из элементов строки. Ее синтаксис:

Split(expression[, delimiter[, limit[, compare]]])

Ее параметры:

  • expression - строковое выражение, результат которого задает строку - источник, состоящую из элементов и разделителей.
  • delimeter - строка, задающая последовательность символов, используемых в качестве разделителя. Если этот параметр опущен, то по умолчанию предполагается, что в роли разделителя выступает пробел.
  • limit - необязательный параметр, позволяющий ограничить число возвращаемых элементов. По умолчанию его значение равно -1, означающее выделение всех элементов.
  • compare - необязательный параметр, имеющий стандартный смысл во всех операциях над строками. По умолчанию предполагается двоичное побитовое сравнение.

Приведем пример, в котором сложноподчиненное предложение разделяется на простые предложения:

Public Sub SplitString() 'В этой процедуре сложное предложение разделяется на простые 'Объявляем динамический массив Dim Simple() As String, i As Byte

'Размерность массива Simple устанавливается автоматически 'в соответствии с размерностью массива, возвращаемого функцией Split Simple = Split("А это пшеница, которая в темном чулане хранится в доме, " _ & "который построил Джек", ", ") For i = LBound(Simple) To UBound(Simple) Debug.Print Simple(i) Next i

End Sub

В результате работы этой процедуры создается массив из трех элементов:

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

Обратите внимание, для использования результатов работы функции Split создается динамический массив строк. О размерности его нет нужды заботиться, поскольку в момент присвоения ему результата выполнения Split, он заполняется элементами и у него появляется нижняя и верхняя граница. Далее с этим массивом можно работать обычным образом.

У функции Split, на наш взгляд, есть один недостаток. Хотя в роли разделителя может выступать последовательность символов, в нашем примере это пара символов "запятая, пробел", но нельзя использовать разные разделители элементов. В задачах подобного рода типичной является ситуация, когда элементы отделяются разными разделителями, возможно, окруженными пробелами. Позже мы покажем, как можно справиться с этой задачей.



Содержание раздела