字符串长度问题

lsxad 2004-05-08 08:39:51
请教各位一个比较简单的问题。在VB4中,len("啊")=2.而在VB5中是1。由于编程需要,我想在计算 一个汉字的字符数时,返回的值是2。有没有别的函数可以象VB4中的LEN一样,返回2。谢谢!
...全文
123 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
BlueBeer 2004-05-09
  • 打赏
  • 举报
回复
楼主只要求计算"啊"的长度为2,lenb("啊")就行了

LenB(StrConv("啊a", vbFromUnicode))
这样返回3
ariexcorn 2004-05-09
  • 打赏
  • 举报
回复
lenb似乎是返回Unicode字符串的长度,应该是ASCII码的两倍吧~~~
broown 2004-05-09
  • 打赏
  • 举报
回复
对,lenb是返回Unicode字符串的长度,你可以再用StrConv("啊", vbFromUnicode)
vbFromUnicode: 将字符串由 Unicode 转成系统的缺省码页。
即:
MsgBox lenb(strconv("是",vbFromUnicode ))
BlueBeer 2004-05-08
  • 打赏
  • 举报
回复
同意楼上的~
boywang 2004-05-08
  • 打赏
  • 举报
回复
函数lenb就行了。
northwolves 2004-05-08
  • 打赏
  • 举报
回复
Private Sub Command1_Click()
MsgBox strlen("啊ABC")
End Sub

Function strlen(ByVal x As String) As Long
Dim mybyte() As Byte
mybyte = StrConv(x, vbFromUnicode)
strlen = UBound(mybyte) + 1
End Function
wumy_ld 2004-05-08
  • 打赏
  • 举报
回复
Option Explicit
Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long

Private Sub Command1_Click()
MsgBox lstrlen("你") & vbTab & lstrlen("A")
End Sub
wumy_ld 2004-05-08
  • 打赏
  • 举报
回复
lenb(strconv("A",vbFromUnicode ))=1
lenb(strconv("是",vbFromUnicode ))=2

northwolves 2004-05-08
  • 打赏
  • 举报
回复
自定义一个函数:

Private Sub Command1_Click()
MsgBox strlen("啊ABC")
End Sub

Function strlen(ByVal x As String) As Long
Open "c:\temp.txt" For Binary As #1
Put #1, , x
strlen = LOF(1)
Close #1
Kill "c:\temp.txt"
End Function
ryuginka 2004-05-08
  • 打赏
  • 举报
回复
gz
lsxad 2004-05-08
  • 打赏
  • 举报
回复
TO:goodname008 能不能说的详细点。
goodname008 2004-05-08
  • 打赏
  • 举报
回复
用strconv转可以。
也可以用API的lstrlen。
truewill 2004-05-08
  • 打赏
  • 举报
回复
可能要和strconv一起用,不过没试过
truewill 2004-05-08
  • 打赏
  • 举报
回复
lenb
不过我在w2k+vb6测试的时候,lenb(啊)是=2了,但lenb(A)也=2,差点晕了

7,762

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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