vb len("中文")的位数计算的解决方法
2008-04-22 14:01
302 查看
PS:对于pan05、black205两位提出的部份中文还是计算为1位的问题,已修改,感谢两位。
通常VB中的len("中文"),返回的是2,因为vb计算的是Unicode的字符个数,所以每个汉字(日文、韩文)算作一个字符,但是如果我们不想计算Unicode的个数,而是要将汉字当作2位时,怎么办?
可以用如下的函数实现:
Private Function LenC(s As String) As Integer
Dim n As Integer
LenC = 0
For n = 1 To Len(s)
If (AscW(Mid(s, n, 1)) > 256) Or (AscW(Mid(s, n, 1)) < 0) Then
LenC = LenC + 2
Else
LenC = LenC + 1
End If
Next n
End Function
Private Sub Command1_Click()
Print LenC("AAA-中文自选")
End Sub
通常VB中的len("中文"),返回的是2,因为vb计算的是Unicode的字符个数,所以每个汉字(日文、韩文)算作一个字符,但是如果我们不想计算Unicode的个数,而是要将汉字当作2位时,怎么办?
可以用如下的函数实现:
Private Function LenC(s As String) As Integer
Dim n As Integer
LenC = 0
For n = 1 To Len(s)
If (AscW(Mid(s, n, 1)) > 256) Or (AscW(Mid(s, n, 1)) < 0) Then
LenC = LenC + 2
Else
LenC = LenC + 1
End If
Next n
End Function
Private Sub Command1_Click()
Print LenC("AAA-中文自选")
End Sub
相关文章推荐
- python 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- springMVC return "中文乱码"解决方法
- python 处理中文时出现的错误'ascii' codec can't decode byte 0xe9 in position 0: ordinal not in range(128)" 解决方法
- 【.Net码农】Asp.Net异常:"由于代码已经过优化或者本机框架位于调用堆栈之上,无法计算表达式的值"的解决方法
- <img src="中文文件名" /> 无法显示图片,图片名改成英文就可以显示;试了下在电脑桌面写了个HTML测试下,可以显示中文名称的图片,解决方法
- VMware Tools"无法计算本地文件大小。你可能没有执行该操作的权限。”的解决方法
- jquery $("#form").serialize()传中文乱码解决方法
- 解决火狐与IE空格宽度不一致的方法:style="font-family: '宋体', Simsun;"
- Vmware 精简版 打开vmx虚拟机出错 encoding "windows-1251". 的解决方法(转http://hi.baidu.com/zqjiang/blog/item/381d377)
- QQ"被限制登录"的解决方法
- AJAX.NET 1.0 "Sys未定义" 解决方法
- Cocos2d-x初入学堂(7)-->win32显示中文乱码解决方法
- vc6.0无法使用“添加到工程”或者"打开文件"解决方法
- 错误提示 Suspicious method call; should probably call "draw" rather than "onDraw" 的解决方法
- javac命令"could not open X:/jre1.5.0/lib/i386/jvm.cfg" 的解决方法
- 解决方法:SQL2008 链接服务器 访问接口 "SQLNCLI10" 的架构行集 出错的问题!
- .net 4.0 ValidateRequest="false" 无效解决方法
- the currently page contains invalid path"之解决方法
- 用PowerDesigner逆向数据库工程时&rdquo;Unable to list the table&quot;错误的解决方法(转载)
- .net Repeater无数据时显示"no result" 快速解决方法