mSGboX "This is a message box."
不過,光因為您可以隨意鍵入 Msgbox,並不代表 VBScript 所執行的程序和測試也都不分大小寫。比方說,您可試試執行這個指令碼,它會比較 example@abc.com 和 example@ABC.com:
str1 = "example@abc.com"
str2 = "example@ABC.com"
If str1 = str2 Then
Wscript.Echo "The strings are equal."
Else
Wscript.Echo "The strings are not equal."
End If
執行指令碼後,會得到這則訊息:
The strings are not equal.
怎麼會這樣?是這樣的,在預設情況下,當 VBScript 以較字串值的時候,它比較的是字串當中每個字元的 ASCII 值。在 ASCII 完美的世界中,大寫 A 和小寫 a 有著不同的值 (分別是 65 和 97)。因為 ACSII 值不同,所以 VBScript 堅持這兩個字串是不同的。
那麼我們要怎麼解決這個問題呢?我們會向您說明兩個不同的解決辦法。
對於初學者,可以使用 VBScript 函式 StrComp (代表 String Comparison),這有助於確保指令碼進行的是文字比較,而非二進位比較 (二進位比較會將 A 和 a 視為不同的字元,而文字比較則不會)。例如:
str1 = "example@abc.com"
str2 = "example@ABC.com"
intCompare = StrComp(str1, str2, vbTextCompare)
If intCompare = 0 Then
Wscript.Echo "The strings are equal."
Else
Wscript.Echo "The strings are not equal."
End If
在這個指令碼中,我們指定兩個字串值 (str1 和 str2),接著呼叫 StrComp 函式。StrComp 會取得三個參數:兩個比較的字串,以及 VBScript 常數 vbTextCompare。字串比較的結果接著會存放到變數中,我們將之命名為 intCompare。若 intCompare 等於 0,表示兩個字串相等,若 intCompare 不等於 0,就表示兩個字串不同。
不妨試試,看會有什麼結果。應該會得到這則訊息:
The strings are equal.
呼!好多了。
這裡有另一種方法可確保比較字串時,不需要擔心字母大小。在這個指令碼中,我們使用 UCase 函式將兩個字串中的所有字母轉換成大小 (換句話說,兩個字串都會被轉換成 EXAMPLE@ABC.COM)。因為不用擔心小寫字母,所以這個指令碼會回報兩個字串是一樣的:
str1 = UCase("example@abc.com")
str2 = UCase("example@ABC.com")
If str1 = str2 Then
Wscript.Echo "The strings are equal."
Else
Wscript.Echo "The strings are not equal."
End If
記住,您只應該在大小寫不重要的時候採用其中一種方法。如果攸關大小寫 (也就是說,如果 example@ABC.com 不應該與 example@abc.com 視為相同的話),那麼就使用正規的同等測試:
str1 = "example@abc.com"
str2 = "example@ABC.com"
If str1 = str2 Then
Wscript.Echo "The strings are equal."
Else
Wscript.Echo "The strings are not equal."
End If
如果您還在好奇的話,我們的 Scripting Guy 最後還是想出了以字母 K 開頭的「Kansas」一字。謝天謝地! |