vb 判断汉字
Asc小于零不一定是汉字还有可能是全角字符我写的这个PrivateSubCharAccount_Click()DimSum&Sum=0Forc=1ToLen(Text1....
Asc小于零不一定是汉字 还有可能是全角字符
我写的这个
Private Sub CharAccount_Click()
Dim Sum&
Sum = 0
For c = 1 To Len(Text1.Text)
Char = Mid(Text1.Text, c, 1)
If AscW(Char) < 40870 And AscW(Char) > 19967 Then
Sum = Sum + 1
End If
Next c
MsgBox "汉字总数为" & Sum, vbOKOnly, "提示"
End Sub
这个也不能准确判断 为什么啊
有什么方法能够准确判断是汉字呢
不要太复杂的回答 。。我新手 谢谢各位大神了 展开
我写的这个
Private Sub CharAccount_Click()
Dim Sum&
Sum = 0
For c = 1 To Len(Text1.Text)
Char = Mid(Text1.Text, c, 1)
If AscW(Char) < 40870 And AscW(Char) > 19967 Then
Sum = Sum + 1
End If
Next c
MsgBox "汉字总数为" & Sum, vbOKOnly, "提示"
End Sub
这个也不能准确判断 为什么啊
有什么方法能够准确判断是汉字呢
不要太复杂的回答 。。我新手 谢谢各位大神了 展开
展开全部
Function isLetter(letter As String) As String
If Asc(letter) < 0 Then
’Ascii码小于0的为汉字区,但其中有的是全角字符而不完全是汉字,需要进一步区分
gbascii = AscB(StrConv(letter, vbFromUnicode))
'MsgBox gbascii
'区位码在16区之后的为汉字[16区以前的 是全角字符]
If gbascii - 160 > 15 Then
isLetter = "是汉字"
Else
isLetter = "是全角符号"
End If
Else
isLetter = "是半角英文或数字"
End If
End Function
.................张志晨:我想这个比较简单,符合你的意愿。
If Asc(letter) < 0 Then
’Ascii码小于0的为汉字区,但其中有的是全角字符而不完全是汉字,需要进一步区分
gbascii = AscB(StrConv(letter, vbFromUnicode))
'MsgBox gbascii
'区位码在16区之后的为汉字[16区以前的 是全角字符]
If gbascii - 160 > 15 Then
isLetter = "是汉字"
Else
isLetter = "是全角符号"
End If
Else
isLetter = "是半角英文或数字"
End If
End Function
.................张志晨:我想这个比较简单,符合你的意愿。
展开全部
1、方法1
VB6中提供了LenB函数用于字符串中的字节数据。如同在双字节字符集语言中一样,LenB返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB返回在内存中的大小。
LenB)
对要处理的字符串Str1,必须先使用StrConv函数把ANSI格式的Byte数组转换为字符串,否则直接使用LenB函数得到的结果比实际结果大。
2、方法2
这里自定义了一个子函数CLen来计算汉字字符串的实际长度。同时还能判定字符串中汉字的实际个数。
Function CLen as Integer
Static HzNum as Integer
L = len
For n=1 to L
If Asc)<0 Then HzNum = HzNum + 1
Next n
Clen = L + HzNum
End Function
CLen函数中的静态变量HzNum返回字符串中实际汉字的数目。
VB6中提供了LenB函数用于字符串中的字节数据。如同在双字节字符集语言中一样,LenB返回的是用于代表字符串的字节数,而不是返回字符串中字符的数量。如为用户自定义类型,LenB返回在内存中的大小。
LenB)
对要处理的字符串Str1,必须先使用StrConv函数把ANSI格式的Byte数组转换为字符串,否则直接使用LenB函数得到的结果比实际结果大。
2、方法2
这里自定义了一个子函数CLen来计算汉字字符串的实际长度。同时还能判定字符串中汉字的实际个数。
Function CLen as Integer
Static HzNum as Integer
L = len
For n=1 to L
If Asc)<0 Then HzNum = HzNum + 1
Next n
Clen = L + HzNum
End Function
CLen函数中的静态变量HzNum返回字符串中实际汉字的数目。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Private Sub Command1_Click()
Dim Sum&
Sum = 0
For c = 1 To Len(Text1.Text)
Char = Mid(Text1.Text, c, 1)
If (AscW(Char) > -40870 And AscW(Char) < -19967) Or (AscW(Char) < 40870 And AscW(Char) > 19967) Then
Sum = Sum + 1
End If
Next c
MsgBox "汉字总数为" & Sum, vbOKOnly, "提示"
End Sub
'因为汉字ascw可能大于0
Dim Sum&
Sum = 0
For c = 1 To Len(Text1.Text)
Char = Mid(Text1.Text, c, 1)
If (AscW(Char) > -40870 And AscW(Char) < -19967) Or (AscW(Char) < 40870 And AscW(Char) > 19967) Then
Sum = Sum + 1
End If
Next c
MsgBox "汉字总数为" & Sum, vbOKOnly, "提示"
End Sub
'因为汉字ascw可能大于0
追问
厉害! ascw返回integer型 0-32767 汉字不够用 才会有负的~~
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
判断单个字符是否为汉字的函数。
字符串是否包含汉字,请您自行据此处理吧,您反正会循环Mid。
Public Function ChineseBol(Str1 As String) As Boolean
'判断Str1是否为汉字
'假定Str1只为一个汉字,多个汉字请据此处理
LChinese = CLng("&H4E00") '汉字最小值
UChinese = CLng("&H9FA5") '汉字最大值
If AscW(Str1) >= LChinese And AscW(Str1) <= UChinese Then
ChineseBol = True
Else
ChineseBol = False
End If
End Function
字符串是否包含汉字,请您自行据此处理吧,您反正会循环Mid。
Public Function ChineseBol(Str1 As String) As Boolean
'判断Str1是否为汉字
'假定Str1只为一个汉字,多个汉字请据此处理
LChinese = CLng("&H4E00") '汉字最小值
UChinese = CLng("&H9FA5") '汉字最大值
If AscW(Str1) >= LChinese And AscW(Str1) <= UChinese Then
ChineseBol = True
Else
ChineseBol = False
End If
End Function
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
Function CountChinese(Byval txtStr as String)
dim i as long
dim alls as long
for i=1 to len(txtStr)
if asc(mid(txtStr,i,1))<0 then
alls=alls+1
end if
next i
CountChinese=alls
End Function
[我这个函数就可以进行字符串中汉字个数的统计]
dim i as long
dim alls as long
for i=1 to len(txtStr)
if asc(mid(txtStr,i,1))<0 then
alls=alls+1
end if
next i
CountChinese=alls
End Function
[我这个函数就可以进行字符串中汉字个数的统计]
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询