有能对中英文分别按双、单字节计算长度的函数吗??

解决方案 »

  1.   

    在VB中部分字符串处理函数在函数名结尾增加字符B,表示以字节方式处理字符串。
    如:Left/LeftB  Len/LenB 等等。Dim str As String
    str = "你好"
    Debug.Print Len(str)
    Debug.Print LenB(str)输出结果为:2
                4good luck...
      

  2.   

    你的方法也不行,因为我要的是事先不知道字符串包含的是中文还是英文。
    即变量str,在程序中可能返回中文,也可能返回英文。
    而且,lenb("a")=2,lenb("中")也等于2。
    总之我想完成下面的功能:
    Dim a As String
    Dim b As String
    a = "保安部"
    b = "KTV"
    Debug.Print a & String(9 - LenB(a), "z") & "姓名1"
    Debug.Print b & String(9 - LenB(b), "z") & "姓名2"
    返回
    保安部   姓名1
    KTV   姓名2
    想使两行对齐输出。

    保安部   姓名1
    KTV      姓名2
      

  3.   

    lenb(strconv(str,vbfromunicode))
    str就是你的字符串。
      

  4.   

    谢谢!!给分前最后问一个问题,
    我知道VB是用unicode字符集,但我的程序要在win98(或win2K)下用时,lenb(strconv(str,vbfromunicode))还能适合我的要求吗??(因为我查了一下,vbfromunicode是指缺省字符集,而win2K的缺省字符集是unicode,win98则好像是ANSI吧!!)
      

  5.   

    在win98(或win2K)下没有问题。
      

  6.   

    '假设欲计算字串 str1 的长度
    Dim str1 As String
    Dim i As Long
    Dim c As Long
    Dim n As LongFor i = 1 To Len(str1)
        c = Asc(Mid(Str, i, 1))
        If c >= 0 And c < 128 Then
            n = n + 1 '计算英文
        Else
            n = n + 2 '计算中文
        End If
    Next i试试看吧。
      

  7.   

    最好还是用boywang(大力水手)的方法吧,若实在不行再试试我说的,即通过ASC判断是否英文。