LenB 函数作用于字符串中的字节数据,如同在双字节字符集(DBCS)语言中一样。所以 LenB 返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB 返回在内存中的大小,包括元素之间的衬垫。

解决方案 »

  1.   

    YHeng:请不要从MSDN上复制东西给我,因为我自己会看MSDN。
      

  2.   

    msdn不告诉你返回的是字节吗,VB使用的是unicode,即中英文均采用双字节!!!!!!
      

  3.   

    是不是因为WINDOWS系统中(特别是中文的),给每个字符分配的‘字符’存放空间都是按‘双字‘容量来分的???所以就等于lenB("a")=2,它把没有被占用的那一个字节也算上了。
      

  4.   

    那和Len()还有什么区别?根本就没有了区别嘛!
      

  5.   

    YHeng(我来也!) 已经说清楚了,要达到你所想要的效果,可以用StrConv函数,这样:
    LenB(StrConv('a", 128)=1
    LenB(StrConv("王", 128)=2
    具体参数含义请见msdn
      

  6.   

    Len 得知字符串的字数
    LenB 得知变量占用记忆体几个Byte
      

  7.   

    Len 返回字符串的字符个数
    LenB 返回字符串所占的字节数这个问题引来这么多人讨论,人气挺足!!!!!!
      

  8.   

    有区别得,len()只获取‘字符串字符的数目’。。不信你试len("王a")=2..而lenB("王a")=4。。一般情况下你不会感觉有什么不妥,但如果你要处理中文与英文混合的文本。特别是你要按照你程序的要求来取其中的第几位的字符,,那你的程序就根本不会理解你的做什么。。如我要取字符串"王a二"中的‘二’字.用你的方法我的语句如下:
    dim str String
    f="王a二"
    msgbox mid(f,2,3)'可是你看取出来的字符变成了"a二",多了一个'a'那就不准了。。刚好找到一篇专门讲教这方面的资料。。你看看。。
    http://www.csdn.net/develop/read_article.asp?id=8988