VBScript中的Split函数

关于VB中的Split函数的介绍,可以参考页面:

http://msdn.microsoft.com/zh-cn/library/6x627e5f%28v=VS.80%29.aspx

它的声明为:

Function Split(
   ByVal Expression As String,
   Optional ByVal Delimiter As String = " ",
   Optional ByVal Limit As Integer = -1,
   Optional ByVal Compare As CompareMethod = CompareMethod.Binary
) As String()

但是Split在VBS中的用法和它有一点不同的地方,在VBS中这个函数的用法为:

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

expression:必选,是一个字符串(String)表达式,

delimiter:可选,用于分隔expression的一个字符串(可以是单个字符也可以是多个),如果省略delimeter,则默认值为" "(一个空格)

count:可选,拆分子串的数量

compare:可选,数值,指示计算子字符串时使用的比较模式(用于delimiter与expression中子串的比较),比较模式如下:

  • vbBinaryCompare,0,执行二进制比较

  • vbTextCompare,1,执行文字比较

(VBS里没有“Option Compare { Binary | Text }”选项,所以compare的值不能为-1)

下面这段代码(test.vbs)测试了Split函数的各个用法

Option Explicit
On Error Resume Next

PrintArray Split("1 2 3 4 5")
PrintArray Split("1,2,3,4,5", ",")
PrintArray Split("1,2,3,4,5", "2,3,4")
PrintArray Split("1,2,3,4,5", ",", 1)
PrintArray Split("1,2,3,4,5", ",", 2)
PrintArray Split("1,2,3,4,5", ",", 999)
PrintArray Split("Tsybius and Galatea", "and", 999, vbBinaryCompare)
PrintArray Split("Tsybius and Galatea", "AND", 999, vbBinaryCompare)
PrintArray Split("Tsybius and Galatea", "and", 999, vbTextCompare)
PrintArray Split("Tsybius and Galatea", "AND", 999, vbTextCompare)

Private Sub PrintArray(ByRef Array)
    Dim Result 
    Dim i : For i = 0 To UBound(Array)
        Result = Result & Array(i) & "|"
    Next
    WScript.Echo Left(Result, Len(Result) - 1) '去掉最后一个"|"
End Sub

这段代码可以用下面这段批处理命令(test.bat)执行:

@cscript test.vbs
@echo.
@pause

运行结果如下:

VBScript中的Split函数

下面针对上面10组Split函数的调用逐个进行说明:

1)Split("1 2 3 4 5")

因为没有指定delimiter,所以按默认的空格进行分组

2)Split("1,2,3,4,5", ",")

指定了delimiter为英文逗号,所以按英文逗号进行分组

3)Split("1,2,3,4,5", "2,3,4")

指定了delimiter为多个字符“2,3,4”,所以根据这个字符串进行分组

4)Split("1,2,3,4,5", ",", 1)

指定了delimiter为逗号,但分组数为1,所以整个字符串就分为1组,还是原字符串

5)Split("1,2,3,4,5", ",", 2)

指定了delimiter为逗号,分组数为2,所以整个字符串分为2组,第1组正常分组,第2组包括后面的全部字符

6)Split("1,2,3,4,5", ",", 999)

指定了delimiter为逗号,分组数为999,因为999这个数足够大,因此分组和2)中相同

7)Split("Tsybius and Galatea", "and", 999, vbBinaryCompare)

以二进制形式比对,只有字符串中某段文字和delimiter中完全匹配,才会按之分组,比如“and”和“and”是匹配的

8)Split("Tsybius and Galatea", "AND", 999, vbBinaryCompare)

接7),因为“and”和“AND”从二进制角度看是不匹配的,因此,不会按“AND”分组

9)Split("Tsybius and Galatea", "and", 999, vbTextCompare)

以文本形式比对,这种情况下“and”和“and”是一样的

10)Split("Tsybius and Galatea", "AND", 999, vbTextCompare)

文本形式比对中,忽略了字母的大小写进行字符串中文字和delimiter的匹配,因此“and”和“AND”也是一样的

END

你可能感兴趣的:(split,VBScript,vbs)