Dopey,Sneezy,Doc,Grumpy,Sleepy,Happy,Bashful
藉由執行 Split 函式並告知該函式逗號是我們的分隔符號 (也就是隔開個別項目的字元),可以很輕鬆地將此字串分隔成它的構成部分:
Dopey
Sneezy
Doc
Grumpy
Sleepy
Happy
Bashful
總之它是個非常好用的小函式,尤其是在處理檔案路徑、Active Directory AdsPaths,以及任何其他部分通常與整體同等重要的情況的時候 (例如,Split 函式可以將 C:\Scripts\MyScript.vbs 這樣的檔案路徑,分隔出磁碟機、資料夾以及檔案名稱)。
是都沒什麼問題,只差 SA 是想知道在個別文字字串中有幾個項目;例如,我們不想要知道七個小矮人的名字,只想知道有七個小矮人列在字串中。
附註:冒著吹牛的危險,我們要說 Scripting Guy (經常被誤認為七個小矮人) 不用查就知道所有七個小矮人的名字。以下是給對小典故有興趣的迷:Dopey (最常被誤認為 Scripting Guy 的小矮人) 原本的名字是 Deafy。很怪,但是是真的! |
那我們該如何確定字串中所找到項目數呢?其實只要使用一個像這樣的簡單小指令碼:
strNames = "Dopey,Sneezy,Doc,Grumpy,Sleepy,Happy,Bashful"
arrNames = Split(strNames, ",")
Wscript.Echo Ubound(arrNames) + 1
在第 1 行,我們將七個小矮人的名字 (每個名字之間用逗號分隔) 指定給一個名為 strNames 的變數。在第 2 行,我們呼叫 Split 函式,然後指明分隔符號為逗號,所以您才會看到 "," 被當作第二個參數傳遞到 Split,而第一個參數當然就是我們希望 Split 處理的字串。這會回傳一個名為 arrNames 的陣列,陣列中的每個項目都代表每個小矮人的名字 (順道一提,arrNames 這個名稱純粹是任意定的;您想要使用什麼變數名稱都可以)。
這將我們帶到第 3 行:
Wscript.Echo Ubound(arrNames) + 1
我們在這裡所做的就是回應陣列的 Ubound (上限) 值再加上 1,這是什麼意思呢?意思是,在陣列中的每個項目都會自動指定一個索引編號:第一個項目指定的索引編號為 0,第二個項目指定的索引編號為 1,然後以此類推。在記憶體中,我們的陣列看起來像這樣:
索引編號 |
項目 |
0 |
Dopey |
1 |
Sneezy |
2 |
Doc |
3 |
Grumpy |
4 |
Sleepy |
5 |
Happy |
6 |
Bashful |
Ubound 函式固定會傳回陣列中最後一個項目的索引編號;在此例中,Ubound 傳迴的號碼是 6。Ubound 值固定會比陣列中的項目數少一,記住陣列中實際上有 7 個項目。之所以會如此,是因為陣列中的第一個項目指定的索引編號為 0;如果第一個項目為編號 1,那 Ubound 值也會表示陣列中的項目總數。但是沒有關係:我們只要將 Ubound 值加上 1,就可以得到項目總數了。結案!
喔,另外還有一件事:沒問題,我們會強烈地勸阻 Peter 在他下次網路廣播中別唱與指令碼相關的「Someday My Prince Will Come」(我的王子總有一天會來到) 版本。我們向您保證。 |