相對於本身的潛在功能,L I K E可能是最被忽視的一個操作符了。它的最基本用途是檢查一個字符串與給定樣式的匹配程度。
比如,很容易檢查一個產品ID號是否由一個字母以及3個數字組成:
If ProductID Like "[A-Za-z][0-9][0-9][0-9]" Then Print "OK"
或者:
If ProductID Like "[A-Za-z]###" Then Print "OK"
除了上述基本功能,LIKE在其他情況下也非常有用。
比如,可以檢查一個字符串只包含大寫字母:
If Not StringVar Like "*[!A-Z]*" Then Print "OK"
同理,也可以檢查一個字符串只包含數字:
If Not StringVar Like "*[!0-9]*" Then Print "OK"
檢查一個字符串只包含字母或者數字符:
If Not StringVar Like "*[!A-Za-z0-9]*" Then Print "OK"
檢查一個字符串是否為合法的VB變量名,就是說,開頭是一個字母,接着跟隨字母或數字符:
If VarName like "[A-Za-z]*" And Not Mid$(VarName, 2) Like "*[!A-Z_a-z0-9]*" Then Print "OK"
檢查字符串是否至少包含2個空格(連續的或者間隔的):
If TestString Like "* * *" Then Print "OK"
進一步確認2個空格是不連續的:
If TestString Like "* ?* *" Then Print "OK"
檢查一個有符號整數是很復雜的事情,因為必須計算出前導符號並且計算好"#"符號的正確數目:
If NumValue Like "#" Or (Len(NumValue) > 1 And NumValue Like "[-+0-9]" & String$(Len(NumValue) - 1, "#")) Then Print "OK"
檢測NumValue是否包含一個有符號的十進制數值。這種情況下,我們必須要確定存在一個前導符號以及只有一個十進制分隔符,並且所有其他字符都是數字符:
If NumValue Like "#" Or (Len(NumValue) > 1 And Left$(NumValue, 1) Like "[-+.0-9]" And Not Mid$(NumValue, 2) Like "*[!.0-9]*" And Not NumValue Like "*.*.*" ) Then Print "OK"
附:Like 運算符示例
Dim MyCheck
MyCheck = "aBBBa" Like "a*a" ' 返回 True。
MyCheck = "F" Like "[A-Z]" ' 返回 True。
MyCheck = "F" Like "[!A-Z]" ' 返回 False。
MyCheck = "a 2a" Like "a#a" ' 返回 True。
MyCheck = "aM5b" Like "a[L-P]#[!c-e]" ' 返回 True。
MyCheck = "BAT123khg" Like "B?T*" ' 返回 True。
MyCheck = "CAT123khg" Like "B?T*" ' 返回 False。