利用 lstrlen 計算中英文混合字串的長度
在 32-bit 版本的 VB 底下, 將每一個字元都視為兩個 Byte, 所以
Len("中英Mixed") 等於 7
LenB("中英Mixed") 等於 14
但是在很多場合底下, 我們希望中文字長度以 2 計算, 英文字母長度以 1 計算, 此時使用的方法如下:
' 欲計算字串 S 的長度
N = 0
For I = 1 To Len(S)
C = Asc(Mid(S, I, 1)) ' 取得第 I 個字元組的字元碼
If C >= 0 And C < 128 Then ' 英文
N = N + 1
Else ' 中文
N = N + 2
End If
Next
看起來程式有點囉唆, 如果您不喜歡這個方法, 可以使用 Windows API 的 lstrlen 函數, 假設假計算 S 的長度, 則 API 宣告式如下:
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
而呼叫的敘述則是:
n = lstrlen("中英Mixed" + Chr(0))
Print n ' n 將等於 9
請注意呼叫 lstrlen 時必須加上 Chr(0), 因為此一函數是根據 Chr(0) 來判斷字串的結束。
呼叫 lstrlen 除了程式比較簡短之外, 速度也比我們寫 VB 程式判斷中英文字然後計算長度來的快。