VBScript 中的字符串分词






4.17/5 (6投票s)
一个简单的函数,允许您使用多个分隔符来分词。
这是一个非常简单的字符串分词函数。 你向函数提供要分词的字符串,以及用于分隔分词的标记数组。
例如,假设你有一个字符串 "Tom, Dick and Harry",并且希望将其分解为 "Tom"、"Dick"、"Harry"。 你的字符串是 "Tom, Dick and Harry",你的数组包含 "," 和 "and" 分隔符。
Dim Str, Seps(2)
Str = "Tom, Dick and Harry"
Seps(0) = ","
Seps(1) = "and"
Dim i, a
a = Tokenize(Str, Seps)
Response.Write "<p>Found " & UBound(a) & " tokens</p>"
Response.Write "<ol>"
For i=1 to UBound(a)
Response.Write "<li>Keyword " & i & " = " & a(i-1) & "</li>"
next
Response.Write "</ol>"
结果如下
Found 3 tokens
1. Keyword 1 = Tom
2. Keyword 2 = Dick
3. Keyword 3 = Harry
函数如下
Function Tokenize(byVal TokenString, byRef TokenSeparators())
Dim NumWords, a()
NumWords = 0
Dim NumSeps
NumSeps = UBound(TokenSeparators)
Do
Dim SepIndex, SepPosition
SepPosition = 0
SepIndex = -1
for i = 0 to NumSeps-1
' Find location of separator in the string
Dim pos
pos = InStr(TokenString, TokenSeparators(i))
' Is the separator present, and is it closest to the beginning of the string?
If pos > 0 and ( (SepPosition = 0) or (pos < SepPosition) ) Then
SepPosition = pos
SepIndex = i
End If
Next
' Did we find any separators?
If SepIndex < 0 Then
' None found - so the token is the remaining string
redim preserve a(NumWords+1)
a(NumWords) = TokenString
Else
' Found a token - pull out the substring
Dim substr
substr = Trim(Left(TokenString, SepPosition-1))
' Add the token to the list
redim preserve a(NumWords+1)
a(NumWords) = substr
' Cutoff the token we just found
Dim TrimPosition
TrimPosition = SepPosition+Len(TokenSeparators(SepIndex))
TokenString = Trim(Mid(TokenString, TrimPosition))
End If
NumWords = NumWords + 1
loop while (SepIndex >= 0)
Tokenize = a
End Function