作业帮 > 综合 > 作业

vb中统计文章中字母及汉字的个数

来源:学生作业帮 编辑:拍题作业网作业帮 分类:综合作业 时间:2024/05/01 20:47:39
vb中统计文章中字母及汉字的个数
文本框中输入一篇文章,如"i love you and you love me",用输入对话框输入一个字母或一个汉字,统计它在文本框中出现的次数,并用消息框输出.
要准确地统计字数,可逐一将字符串转换为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) 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) 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 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 Su