利用lstrlen 計算中英文混合字串的長度

文章推薦指數: 80 %
投票人數:10人

LenB("中英Mixed") 等於14. 但是在很多場合底下, 我們希望中文字長度以2 計算, 英文字母長度以1 計算, 此時使用的方法如下:. ' 欲計算字串S 的長度 利用lstrlen計算中英文混合字串的長度 在32-bit版本的VB底下,將每一個字元都視為兩個Byte,所以 Len("中英Mixed")等於7 LenB("中英Mixed")等於14 但是在很多場合底下,我們希望中文字長度以2計算, 英文字母長度以1計算,此時使用的方法如下: '欲計算字串S的長度 N=0 ForI=1ToLen(S) C=Asc(Mid(S,I,1))'取得第I個字元組的字元碼 IfC>=0AndC<128Then'英文 N=N+1 Else'中文 N=N+2 EndIf Next 看起來程式有點囉唆,如果您不喜歡這個方法,可以使用Windows API的lstrlen函數,假設假計算S的長度,則API宣告式如下: PrivateDeclareFunctionlstrlenLib"kernel32"Alias "lstrlenA"(ByVallpStringAsString)AsLong 而呼叫的敘述則是: n=lstrlen("中英Mixed"+Chr(0)) Printn'n將等於9 請注意呼叫lstrlen時必須加上Chr(0),因為此一函數是根據Chr(0) 來判斷字串的結束。

呼叫lstrlen除了程式比較簡短之外,速度也比我們寫VB 程式判斷中英文字然後計算長度來的快。



請為這篇文章評分?