2009-07-11 3 views
3

У меня есть около 100 строк текста, которые я хочу разметить, которые похожи следующие действия:Tokenizing Строки

<word> <unknown number of spaces and tabs> <number> 

У меня возникли проблемы с поиском разметить функции с помощью VBA. Какой был бы самый простой метод для токенизации таких строк в VBA?

+0

Где вы везете строки из? Если они находятся в фактическом документе Word, вы можете использовать встроенную функцию поиска и замены Word. – guillermooo

ответ

3

Вы можете читать строки за строкой и использовать функцию разделения для разбиения слова и числа на пробел. Я смутно помню, что VBA имеет функцию разделения.

Я получил следующую ссылку, выполнив поиск в google. Не знаете, какую версию офиса вы используете.

http://msdn.microsoft.com/en-us/library/aa155763(office.10).aspx

Эта ссылка имеет функцию разделения.

+0

Мне удалось разбить строку на массив строк, допустим, это называется hello(). Действительное содержимое находится в первой и последней записи hello(). Как бы я вычислил размеры массива для меня, чтобы адресовать первую и последнюю запись массива, так как размер массива является переменным. – stanigator

+0

вы можете использовать ubound (массив), чтобы получить количество элементов. Вы можете получить первую запись по массиву (0) и последней записи по массиву (ubound (array)). Split возвращает 1 мерный массив. Итак, myarray = split ("hello world", "") debug.print myarray (0) dim elementCount как integer elementCount = ubound (myarray) debug.print myarray (elementCount). – shahkalpesh

2

Вы можете использовать метод Split() или для более сложных матчей, вы можете использовать "vbscript.regexp" объект:

Sub NewRegex() 
    Dim reg 
    Dim matches, match, tmpStr As String 

    Set reg = CreateObject("vbscript.regexp") 
    tmpStr = "blah bla ...." 

    With reg 
     .IgnoreCase = True 
     .MultiLine = False 
     .Pattern = "your regex pattern goes here" 
     .Global = True 
    End With 

    Set matches = reg.Execute(tmpStr) 

    For Each match In matches 
     MsgBox match 
    Next mt 

End Sub 

Вот руководство по использованию регулярных выражений из VBA: Using Regular Expressions (RegExp) in Excel