要准确地统计字数
![](/icons/23951dou.gif)
可逐
![](/icons/23951yi.gif)
将
![](/icons/23951zifu.gif)
串转换为ascii码
![](/icons/23951dou.gif)
依据其值判断是为中文
![](/icons/23951zifu.gif)
还是英文
![](/icons/23951zifu.gif)
![](/icons/23951dou2.gif)
0——127的间
![](/icons/23951de.gif)
为大小写字母及数字、半角标点符号、回车、换行等
![](/icons/23951dou.gif)
中文
![](/icons/23951zifu.gif)
![](/icons/23951de.gif)
ascii值则不在0——127的列了
![](/icons/23951dou2.gif)
这样
![](/icons/23951dou.gif)
纯汉字
![](/icons/23951de.gif)
字数统计是很容易
![](/icons/23951de.gif)
![](/icons/23951dou.gif)
倒是英文
![](/icons/23951de.gif)
统计复杂
![](/icons/23951dou.gif)
![](/icons/23951yinwei.gif)
英文统计应以单词为单位
![](/icons/23951dou.gif)
而要判断是否为单词并不是简单
![](/icons/23951de.gif)
事
![](/icons/23951dou2.gif)
我们可以这么处理:如果被检测
![](/icons/23951de.gif)
![](/icons/23951zifu.gif)
为大小写字母
![](/icons/23951dou.gif)
则判断其后面
![](/icons/23951de.gif)
![](/icons/23951zifu.gif)
是否为
![](/icons/23951yi.gif)
个单词
![](/icons/23951de.gif)
标志(如空格、标点符号、回车符等)
![](/icons/23951dou.gif)
如是
![](/icons/23951dou.gif)
则判断为
![](/icons/23951yi.gif)
个单词
以下代码能较准确地统计出textboxControl控件中
![](/icons/23951de.gif)
中、英文字数和数字
![](/icons/23951zifu.gif)
数
![](/icons/23951dou.gif)
并将全部字节数(含各种控制符如回车等)也统计出来
![](/icons/23951dou2.gif)
适用于中英文编排环境
\'窗体级声明
dim c as long, e_word as long \'中英文字数
dim num as long, s as long \'数字及全部
![](/icons/23951zifu.gif)
数
\'统计——
private sub command1_click
dim str as
![](/icons/23951string.gif)
\'总
dim k as long \'计数器
dim tmpstr as
![](/icons/23951string.gif)
\'逐
![](/icons/23951yi.gif)
检测
![](/icons/23951de.gif)
c = 0: e_word = 0: num = 0: s = 0 \'清空变量
str = text1.text & \" \" \'加
![](/icons/23951yi.gif)
空格便于意外时计算最后
![](/icons/23951yi.gif)
个
for k = 1 to len(str) - 1
tmpstr = mid$(str, k, 1)
![](/icons/23951if.gif)
asc(tmpstr) >= 65 and asc(tmpstr) <= 90 then \'小写字母
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) <= 64 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) > 90 and asc(mid$(str, k + 1, 1)) < 97 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) > 122 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) = 39 or asc(mid$(str, k + 1, 1)) = 45 then e_word = e_word - 1 \'是符号\'或-时
![](/icons/23951else.gif)
![](/icons/23951if.gif)
asc(tmpstr) >= 97 and asc(tmpstr) <= 122 then \'大写字母
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) < 65 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) > 90 and asc(mid$(str, k + 1, 1)) < 97 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) > 122 then e_word = e_word + 1
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) = 39 or asc(mid$(str, k + 1, 1)) = 45 then e_word = e_word - 1 \'是符号\'或-时
![](/icons/23951else.gif)
![](/icons/23951if.gif)
asc(tmpstr) >= 48 and asc(tmpstr) <= 57 then \'阿拉伯数字数字
![](/icons/23951if.gif)
asc(mid$(str, k + 1, 1)) < 48 or asc(mid$(str, k + 1, 1)) > 57 then num = num + 1
![](/icons/23951else.gif)
![](/icons/23951if.gif)
asc(tmpstr) > 127 or asc(tmpstr) < 0 then \'中文
c = c + 1
end
next
s = lenb(strconv(text1.text, vbfromunicode)) \'全部
msgbox \"本文共有:\" & vbcrlf & vbcrlf & \"汉字字数: \" & c & _
\" 个 (含全角标点)\" & vbcrlf & \"英文单词: \" & e_word & \" 个 (不含半角标点)\" & vbcrlf & _
\"数字: \" & num & \" 个\" & vbcrlf & \"全部字节: \" & s & \" 个\", vbinformation, \"字数统计\"
end sub