如何用VB统计汉字个数

rt... rt 展开
 我来答
匿名用户
2014-01-01
展开全部
要准确地统计字数,可逐一将字符串转换为ASCII码,依据其值判断是为中文字符还是英文字符。0——127之间的为大小写字母及数字、半角标点符号、回车、换行等,中文字符的ASCII值则不在0——127之列了。这样,纯汉字的字数统计是很容易的,倒是英文的统计复杂,因为英文统计应以单词为单位,而要判断是否为单词并不是简单的事。我们可以这么处理:如果被检测的字符为大小写字母,则判断其后面的字符是否为一个单词的标志(如空格、标点符号、回车符等),如是,则判断为一个单词。
以下代码能较准确地统计出TextBox控件中的中、英文字数和数字字符数,并将全部字节数(含各种控制符如回车等)也统计出来。适用于中英文编排环境。

注释:窗体级声明
Dim c As Long, e_word As Long 注释:中英文字数
Dim Num As Long, s As Long 注释:数字及全部字符数

注释:统计——
Private Sub Command1_Click()

Dim Str As String 注释:总字符
Dim k As Long 注释:计数器
Dim tmpStr As String 注释:逐一检测的字符

c = 0: e_word = 0: Num = 0: s = 0 注释:清空变量
Str = Text1.Text & " " 注释:加一空格便于意外时计算最后一个字符
For k = 1 To Len(Str) - 1
tmpStr = Mid$(Str, k, 1)

If Asc(tmpStr) >= 65 And Asc(tmpStr) <= 90 Then 注释:小写字母
If Asc(Mid$(Str, k + 1, 1)) <= 64 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) > 90 And Asc(Mid$(Str, k + 1, 1)) < 97 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) > 122 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) = 39 Or Asc(Mid$(Str, k + 1, 1)) = 45 Then e_word = e_word - 1 注释:是符号注释:或-时
ElseIf Asc(tmpStr) >= 97 And Asc(tmpStr) <= 122 Then 注释:大写字母
If Asc(Mid$(Str, k + 1, 1)) < 65 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) > 90 And Asc(Mid$(Str, k + 1, 1)) < 97 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) > 122 Then e_word = e_word + 1
If Asc(Mid$(Str, k + 1, 1)) = 39 Or Asc(Mid$(Str, k + 1, 1)) = 45 Then e_word = e_word - 1 注释:是符号注释:或-时
ElseIf Asc(tmpStr) >= 48 And Asc(tmpStr) <= 57 Then 注释:阿拉伯数字数字
If Asc(Mid$(Str, k + 1, 1)) < 48 Or Asc(Mid$(Str, k + 1, 1)) > 57 Then Num = Num + 1
ElseIf Asc(tmpStr) > 127 Or Asc(tmpStr) < 0 Then 注释:中文字符
c = c + 1
End If
Next

s = LenB(StrConv(Text1.Text, vbFromUnicode)) 注释:全部字符

MsgBox "本文共有:" & vbCrLf & vbCrLf & "汉字字数: " & c & _
" 个 (含全角标点)" & vbCrLf & "英文单词: " & e_word & " 个 (不含半角标点)" & vbCrLf & _
"数字: " & Num & " 个" & vbCrLf & "全部字节: " & s & " 个", vbInformation, "字数统计"

End Sub
百度网友bd5a64eaa
2014-01-01 · 超过33用户采纳过TA的回答
知道答主
回答量:108
采纳率:0%
帮助的人:92.1万
展开全部
简单,比如有个text1,只要
a=len(text1.text)
a这个变量就是text1里汉字的个数。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
甫温纶0gH698
推荐于2018-04-20 · TA获得超过363个赞
知道小有建树答主
回答量:354
采纳率:100%
帮助的人:325万
展开全部
Dim num As Integer
Dim text As String
text = "如何用VB统计汉字个数"

For i = 1 To Len(text)
    If Asc(Mid(text, i, 1)) < 0 Then        
    If AscB(StrConv(Mid(text, i, 1), vbFromUnicode)) - 160 > 15 Then num = num + 1    End If
Next i

Msgbox "共有" & num & "个汉字。"
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式