你的方法也不行,因为我要的是事先不知道字符串包含的是中文还是英文。 即变量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
'假设欲计算字串 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试试看吧。
如:Left/LeftB Len/LenB 等等。Dim str As String
str = "你好"
Debug.Print Len(str)
Debug.Print LenB(str)输出结果为:2
4good luck...
即变量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
str就是你的字符串。
我知道VB是用unicode字符集,但我的程序要在win98(或win2K)下用时,lenb(strconv(str,vbfromunicode))还能适合我的要求吗??(因为我查了一下,vbfromunicode是指缺省字符集,而win2K的缺省字符集是unicode,win98则好像是ANSI吧!!)
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试试看吧。