社区
VB基础类
帖子详情
用什么函数可以取得一个字符串的字节数?
LiaoCheng
2004-10-05 06:53:38
用什么函数可以取得一个字符串的字节数?
RT
...全文
542
12
打赏
收藏
用什么函数可以取得一个字符串的字节数?
用什么函数可以取得一个字符串的字节数? RT
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
12 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
rainstormmaster
2004-10-06
打赏
举报
回复
用过VB5.0或者更早版本的读者应该知道VB有一个测试字符串长度的函数: Len。但当你升级到VB6时,会发现这里的Len并没有以前那么好用了——它变成了测试字符个数而不是字符串长度。就是说,当你用以前版本的VB执行Len("字符abc")时,返回值是7,因为中文字符每个有2个字节,所以总共有7个字节;而在VB6中执行,返回值是5。
VB6不再有一个直接计算出字符串总字节数的函数了,因为VB6内部已经把字符串转换成了Unicode——一种比ANSI更新的字符编码方式。
Unicode把每一个字,无论是中文还是其他文字都当成两个字节,如果是英文,则这两个字节中第二个字节保留着不使用,如果是双字节字符(如中文,双字节日文以及韩文),而由这两个字节的组合表示一个字符。所以Len可以方便地知道一共有多少个双字节字符,多少个单字节字符,也就出现了上面所说的情况。
不过既然VB内部把ANSI字符转换成Unicode,那么它一定有对应方法转换回来。所以这里提供一个比较方便的方法来得到总字节数: LenB(StrConv("字符abc", vbFromUnicode))。
这里用到了一个LenB() 函数,你可以自己试试它,比如 LenB("字符")、LenB("abc")、LenB("字符abc"),会发现返回值分别是4、6和10。
为什么是4、6和10呢?
我说过VB内部把ANSI字符转换为Unicode,每个Unicode字符用2个字节来表示,所以,LenB() 的作用是返回字符串的实际字节数。但是,这个实际字节数已经不是我所输入的字符串的,而是被VB转换过的(我们无法让VB函数在转换之前先算好长度),所以我们需要先把字符串转换回来,使用的是 StrConv() 函数。
对于这个函数我不想太过详细解释它(一般应用中比较少用),你可以参考MSDN,我只提一提它的第二个参数:vbFromUnicode。
StrConv()函数的第二个函数指定转换的类型,vbFromUnicode 指定把字符串从Unicode转换回来,如果是vbUnicode,则把字符串转换为Unicode。注意,虽然你的程序中写的是ANSI的字符而不是Unicode字符,但当这个函数执行时,它得到的却是已经被转换成为Unicode的字符串了。
现在问题可以算解决了,但我们还需要另一个解决方法,因为这种方法太费时。想想看,每一次算长度都要进行 Unicode->ANSI 的转换,这将会花费太多时间。对少量字符还可以,对长字符串,时间就变得更长了。
所以我们再讲一个API:lstrlen。
Public Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As String) As Long
以上是lstrlen的声明。lstrlen的作用只有一个:
得到以chr(0)为结尾的字符串的字节数。所以执行 lstrlen("字符abc"+chr(0)) 将返回7。我们不需要知道它内部是如何工作的,但它总是返回该字符串是ANSI时的长度,并且速度很快
chenyu5188
2004-10-06
打赏
举报
回复
lenB()
haohaohappy
2004-10-06
打赏
举报
回复
lenb不是可以嘛
xieyangf
2004-10-06
打赏
举报
回复
用LenB()函数
ryuginka
2004-10-06
打赏
举报
回复
LenB()函数
LiaoCheng
2004-10-06
打赏
举报
回复
to: rainstormmaster(暴风雨 v2.0) ( ) 信誉:228
你的回答太精彩了!!我喜欢!!
BlueBeer
2004-10-05
打赏
举报
回复
Len("ABC测试") = 5
LenB("ABC测试") = 10
LenB(StrConv("ABC测试", vbFromUnicode)) = 7
xiuyuan
2004-10-05
打赏
举报
回复
用lenb()函数在6.0和5.0版本中得到的结果是不一样的
rainstormmaster
2004-10-05
打赏
举报
回复
用lenb:
Dim s As String
s = "CSDN中国最大"
MsgBox LenB(StrConv(s, vbFromUnicode))
dongge2000
2004-10-05
打赏
举报
回复
dim s as string
s="CSDN中国最大"
me.print len(strconv(s,vbfromunicode)
laviewpbt
2004-10-05
打赏
举报
回复
len()函数
Private Sub Form_Load()
Dim str As String
str = "你好!you wish is my command!"
MsgBox Len(str)
End Sub
dongge2000
2004-10-05
打赏
举报
回复
UP
题目:编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
。
本文介绍了
一个
用于截取
字符串
的
函数
,该
函数
能够确保在按
字节数
截取
字符串
时不会截断汉字,适用于UTF-8编码环境。文章提供了具体实现代码及测试案例。
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按照
字节数
截取的
字符串
...
本文介绍了
一个
用于截取
字符串
的
函数
,该
函数
可以根据指定的
字节数
来截取
字符串
,并特别处理了包含汉字的情况。通过使用特定的编码方式,如GBK,
函数
能够正确地处理中文字符,确保截取后的
字符串
格式正确。
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
。...
本文介绍了
一个
Java
函数
,用于根据
字节数
截取
字符串
,确保不会截断汉字,避免出现半个汉字的问题。通过示例展示了如何使用该
函数
处理不同长度的
字符串
。
Other :请编写
一个
函数
,完成可以按GBK
字节数
分割
字符串
的功能
博客提出编写
一个
Java
函数
,实现按GBK
字节数
分割
字符串
的功能,要求遇到中文不能拆成半个以免出现乱码,并给出了
函数
示例及调用结果,如对“中文版Java”按不同
字节数
分割的输出。
编写
一个
截取
字符串
的
函数
,输入为
一个
字符串
和
字节数
,输出为按字节截取的
字符串
...
本文介绍了
一个
自定义的
字符串
截取
函数
实现,该
函数
能够确保在指定
字节数
内截取
字符串
时不会将汉字截断。文章包含完整的Java代码示例,并演示了如何处理不同字符类型。
VB基础类
7,787
社区成员
197,583
社区内容
发帖
与我相关
我的任务
VB基础类
VB 基础类
复制链接
扫一扫
分享
社区描述
VB 基础类
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章