VB 版 (精华区)
发信人: zxfsnow (别怕我伤心), 信区: VB
标 题: 利用 lstrlen 计算中英文混合字串的长度
发信站: 哈工大紫丁香 (2000年05月31日12:29:52 星期三), 转信
发信人: Keri (呵呵2000), 信区: VB
标 题: 利用 lstrlen 计算中英文混合字串的长度
发信站: 虎踞龙盘东南站 (Tue Jan 11 11:39:20 2000), 转信
利用 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 lpSt
ring As String) As Long
而调用的叙述则是:
n = lstrlen("中英Mixed" + Chr(0))
Print n ' n 将等于 9
请注意调用 lstrlen 时必须加上 Chr(0), 因为此一函数是根据 Chr(0) 来判断字串的
结束。
调用 lstrlen 除了程序比较简短之外, 速度也比我们写 VB 程序判断中英文字然后计
算长度来的快。
--
--
以科计为本,以产业报国!
超越自我,飞跃无限!
※ 来源:·哈工大紫丁香 bbs.hit.edu.cn·[FROM: 202.118.235.249]
Powered by KBS BBS 2.0 (http://dev.kcn.cn)
页面执行时间:1.904毫秒