中文問題之 Q&A


我用 Len 函數計算 "中英Mixed" 字串所得到的長度是 7 , 用 LenB 函數計算相同字串則得到 14 , 但實際上我希望得到的字串長度是 9("中英" 佔4個 bytes 、 "Mixed" 佔 5 個 bytes) , 請問我該如何取得正確的字串長度 ?
VB 自從 32-bits 版本以後 , 不管中英文字 , 均以 2 bytes 來儲存 , 術語上稱為「字元組」 , 而 Len 函數的用途是計算字串的字元組數 , LenB 則是計算字元數 , 所以 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