如何获得字符串长度?

tokimemo 2006-07-30 06:17:36
看到这个问题,您一定会笑的。这么简单的问题居然有人问
用Len函数不就可以了么?
是的,但是中文VB是双字节的系统。如果你这样一个语句
StrLen=Len("你好vb")
即StrLen=4
但是我想得到的是类似单字节系统的长度
即,我想得到Len("你好vb")=6
那么怎么在中文vb中使用怎样的方法得到这样的字符长度
也就是让字符串中的中文为2个长度,而数字和字母依然为1个长度?
...全文
4715 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Beijingduck888 2006-07-30
  • 打赏
  • 举报
回复
用API: lstrlen
比上面的快
tokimemo 2006-07-30
  • 打赏
  • 举报
回复
汗一个,居然这样贴MSDN的东西,不过怎么也要把LenB什么的也贴上来吧
不然我的MSDN不就是白装了么,我要看看贴的对不对呢。^_^
MS的MSDN毕竟不是万能的,很多都看不明白,但是没有它,又是万万不能的.郁闷
---------------------
沙发的方法我还要研究一下,如果通过立即给分.
Gutta 2006-07-30
  • 打赏
  • 举报
回复
抢点分:(附带函数说明)
Len 函数


返回 Long,其中包含字符串内字符的数目,或是存储一变量所需的字节数。

语法

Len(string | varname)

Len 函数的语法有下面这些部分:

部分 说明
string 任何有效的字符串表达式。如果 string 包含 Null,会返回 Null。
Varname 任何有效的变量名称。如果 varname 包含 Null,会返回 Null。如果 varname 是 Variant,Len 会视其为 String 并且总是返回其包含的字符数。


说明

两个可能的参数必须有其一(而且只能有其一)。如为用户定义类型,Len 会返回其写至文件的大小。

注意 LenB 函数作用于字符串中的字节数据,如同在双字节字符集(DBCS)语言中一样。所以 LenB 返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB 返回在内存中的大小,包括元素之间的衬垫。对于使用 LenB的示例代码,请参阅示例主题中的第二个示例。

注意 当在用户自定义数据类型中使用变长字符串时,Len 可能不能确定实际存储所需的字节数目。


------------------------
StrConv 函数


返回按指定类型转换的 Variant (String)。

语法

StrConv(string, conversion, LCID)

StrConv 函数的语法有下面的命名参数:

部分 说明
string 必要参数。要转换的字符串表达式。
conversion 必要参数。Integer。其值的和决定转换的类型。
LCID 可选的。如果与系统LocaleID不同,则为LocaleID(系统LocaleID为缺省值。)


设置值

conversion 参数的设置值为:

常数 值 说明
vbUpperCase 1 将字符串文字转成大写。
vbLowerCase 2 将字符串文字转成小写。
vbProperCase 3 将字符串中每个字的开头字母转成大写。
vbWide* 4* 将字符串中单字节字符转成双字节字符。
vbNarrow* 8* 将字符串中双字节字符转成单字节字符。
vbKatakana** 16** 将字符串中平假名字符转成片假名字符。

vbHiragana** 32** 将字符串中片假名字符转成平假名字符。
vbUnicode 64 根据系统的缺省码页将字符串转成 Unicode。
vbFromUnicode 128 将字符串由 Unicode 转成系统的缺省码页。



*应用到远东国别。

**仅应用到日本。

注意 这些常数是由 VBA 指定的。可以在程序中使用它们来替换真正的值。其中大部分是可以组合的,例如 vbUpperCase + vbWide,互斥的常数不能组合,例如 vbUnicode + vbFromUnicode。当在不适用的国别使用常数 vbWide、vbNarrow、vbKatakana,和 vbHiragana 时,就会导致运行时错误。

下面是一些一般情况下的有效分界符:Null (Chr$(0)),水平制表符 (Chr$(9)),换行 (Chr$(10)),垂直制表符 (Chr$(11)),换页 (Chr$(12)) ,回车 (Chr$(13)),空白 (SBCS) (Chr$(32))。在 DBCS中,空白的实际值会随国家/地区而不同。

说明

在把 ANSI 格式的 Byte 数组转换为字符串时,您应该使用 StrConv 函数。当您转换 Unicode 格式的这种数组时,使用赋值语句。
happy_sea 2006-07-30
  • 打赏
  • 举报
回复
LenB(StrConv("你好vb",vbFromUnicode))

7,763

社区成员

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

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