如何样真实知道含汉字的字符串的长度
怎么样真实知道含汉字的字符串的长度。
如一个字串为a=“一二三aa "
如果使用len(a)得5,既把汉字算成一个字节。
如果使用lenb(a)得10,字母也给算成两个。
现在想知道真实的字串长度,lenb(a)是真实的长度吗?如果不是,那真实的长度应该是什么?怎么得到?
------解决方案--------------------
lenb(strconv(字符串,vbunicode))
------解决方案--------------------
两个函数功能是不同的.
len()是字符串的字符数.
lenb()是字符串的字节数.
VB中用的是unicode编码,不论汉字还是英文字母,都是两个字节.
------解决方案--------------------
Dim strTmp As String, i As Integer, strTest As String
strTest = "123我大使的adsad123大使 按时大大上111 "
For i = 0 To Len(strTest) - 1
strTmp = Mid(strTest, i + 1, 1)
If AscW(strTmp) > 256 Then
j = j + 2
Debug.Print strTmp
End If
Next
MsgBox j
------解决方案--------------------
不好意思,刚才写错了………………
len(strconv(字符串,vbformUnicode))
------解决方案--------------------
Option Explicit
Private Declare Function lstrlen Lib "kernel32.dll " Alias "lstrlenA " (ByVal lpString As String) As Long
Private Sub Command1_Click()
Debug.Print lstrlen( "test中文 ")
End Sub
输出8
------解决方案--------------------
两个函数功能是不同的.
len()是字符串的字符数.
lenb()是字符串的字节数.
VB中用的是unicode编码,不论汉字还是英文字母,都是两个字节.
//
原理是上面这个 明白原理后什么都能解决了
除left 外 还能用 mid
------解决方案--------------------
汉字的ASCII少于0
字母符号在0---127,特殊的符号在128以上
------解决方案--------------------
這兩個函數的使用System.Text.Encoding.Default.GetByteCount(String) 字节长度
string.length 字符个数
------解决方案--------------------
两种方法:
1.len(strconv(字符串,vbformUnicode))
2.Private Declare Function lstrlen Lib "kernel32.dll " Alias "lstrlenA " (ByVal lpString As String) As Long
chenhui的方法有点局限了
------解决方案--------------------
对,vb中采用的是unicode字符集,无论什么字符均作为一个字符处理
而通常的ascii字符集则不同,它里面的汉字是作为两个字符处理的
------解决方案--------------------
怎么样真实知道含汉字的字符串的长度?
答:在不同的Windows系统中,例如:Win9x和NT/XP都不同;要命的是在在同一系统中不同的non-Unicode设定返回的长度也不一样。一般用Len(Strconv(sString & VBNullChar,VBFronUnicode)或lstrlenW或lstrlen。
lstrLenW is supported in Win9x,lstrlenW returns String (Ending with VBNullChar) Length
------解决方案--------------------
咳咳......我是蹭分的....
如一个字串为a=“一二三aa "
如果使用len(a)得5,既把汉字算成一个字节。
如果使用lenb(a)得10,字母也给算成两个。
现在想知道真实的字串长度,lenb(a)是真实的长度吗?如果不是,那真实的长度应该是什么?怎么得到?
------解决方案--------------------
lenb(strconv(字符串,vbunicode))
------解决方案--------------------
两个函数功能是不同的.
len()是字符串的字符数.
lenb()是字符串的字节数.
VB中用的是unicode编码,不论汉字还是英文字母,都是两个字节.
------解决方案--------------------
Dim strTmp As String, i As Integer, strTest As String
strTest = "123我大使的adsad123大使 按时大大上111 "
For i = 0 To Len(strTest) - 1
strTmp = Mid(strTest, i + 1, 1)
If AscW(strTmp) > 256 Then
j = j + 2
Debug.Print strTmp
End If
Next
MsgBox j
------解决方案--------------------
不好意思,刚才写错了………………
len(strconv(字符串,vbformUnicode))
------解决方案--------------------
Option Explicit
Private Declare Function lstrlen Lib "kernel32.dll " Alias "lstrlenA " (ByVal lpString As String) As Long
Private Sub Command1_Click()
Debug.Print lstrlen( "test中文 ")
End Sub
输出8
------解决方案--------------------
两个函数功能是不同的.
len()是字符串的字符数.
lenb()是字符串的字节数.
VB中用的是unicode编码,不论汉字还是英文字母,都是两个字节.
//
原理是上面这个 明白原理后什么都能解决了
除left 外 还能用 mid
------解决方案--------------------
汉字的ASCII少于0
字母符号在0---127,特殊的符号在128以上
------解决方案--------------------
這兩個函數的使用System.Text.Encoding.Default.GetByteCount(String) 字节长度
string.length 字符个数
------解决方案--------------------
两种方法:
1.len(strconv(字符串,vbformUnicode))
2.Private Declare Function lstrlen Lib "kernel32.dll " Alias "lstrlenA " (ByVal lpString As String) As Long
chenhui的方法有点局限了
------解决方案--------------------
对,vb中采用的是unicode字符集,无论什么字符均作为一个字符处理
而通常的ascii字符集则不同,它里面的汉字是作为两个字符处理的
------解决方案--------------------
怎么样真实知道含汉字的字符串的长度?
答:在不同的Windows系统中,例如:Win9x和NT/XP都不同;要命的是在在同一系统中不同的non-Unicode设定返回的长度也不一样。一般用Len(Strconv(sString & VBNullChar,VBFronUnicode)或lstrlenW或lstrlen。
lstrLenW is supported in Win9x,lstrlenW returns String (Ending with VBNullChar) Length
------解决方案--------------------
咳咳......我是蹭分的....