怎样测中文字符的长度?(急)

billjava 2006-08-29 11:47:00
在VB中用LENB函数测字符字节长度是,无论是中文还是英文字符,测出的长度都是一样的。但ANSI格式,英文应该是一个字节,中文两个字节,请问怎么能得到这样的结果?
...全文
511 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
viena 2006-09-25
  • 打赏
  • 举报
回复
dim arr() as byte = str
遍历arr,0的数目就是单字节字符的数目
vinegar111 2006-09-25
  • 打赏
  • 举报
回复
学习
南山明月 2006-09-25
  • 打赏
  • 举报
回复
mark
pigsanddogs 2006-09-05
  • 打赏
  • 举报
回复
strconv 有3个参数的, 最后一个代码页参数不填就是默认代码页
英文系统的默认代码页你怎么转。
wully 2006-09-05
  • 打赏
  • 举报
回复
写一个函数,这样可以在任何情况下得到混合字符串的长度

Private Function prvStringLenth(strString As String) As Long
Dim lngI As Long
Dim lngLenth As Long

prvStringLenth = 0
lngLenth = 0

If Len(Trim(strString)) > 0 Then
For lngI = 1 To Len(Trim(strString))
If Asc(Mid(Trim(strString), lngI, 1)) < 0 Then
lngLenth = lngLenth + 2 '如果asc码小于0则为汉字
Else
lngLenth = lngLenth + 1 '大于0则为英文
End If
Next
prvStringLenth = lngLenth
End If

End Function
boywang 2006-08-30
  • 打赏
  • 举报
回复
dim sss as string
dim b() as byte
sss="yourstring"

redim b(1 to lenb(sss))

copymemory b(1),byval strptr(sss),lenb(sss)

英文字符的话,b(偶数)应该为0.
billjava 2006-08-30
  • 打赏
  • 举报
回复
谢谢 大力水手
您这方法我现在在自己的电脑上(中文系统)测试了,没有问题。
可是今天在公司电脑上(英文系统,但unicode设置选择Chinese(PRC))我也写过相同的代码,其测出的英文长度也是2字节,请问是为什么?和code page的选择有关吗?
boywang 2006-08-30
  • 打赏
  • 举报
回复
lenb(strconv(youstring,vbfromunicode))
billjava 2006-08-30
  • 打赏
  • 举报
回复
看来这个确实和系统设置有关。
不光要在区域语言选项中把unicode选为chinese(PRC),还要把标准和格式选为chinese(PRC).
今天我在公司的机器上这样设置后,用lenb(strconv(youstring,vbfromunicode))就可以测出字符串的正确长度了。

2,506

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧