C#Form上有个Textbox,自动统计输入其中的汉字和英文单词的字数,不包括标点符号,只统计汉字和英文完整单

2024-12-19 12:48:43
推荐回答(3个)
回答1:

楼主你好,什么也不说了直接上代码:

string st = "您要验证的字符串";
byte[] l = Encoding.UTF8.GetBytes(st); //字节长度
string str = System.Text.RegularExpressions.Regex.Replace(st, @"[^\w]|_", "");//替换掉所有的符号
string[] x = System.Text.RegularExpressions.Regex.Split(str, @"\d");// 数字个数
string[] xx = System.Text.RegularExpressions.Regex.Split(str, @"[\u4e00-\u9fa5]"); //汉字的个数
string[] xxx = System.Text.RegularExpressions.Regex.Split(str, @"[a-zA-Z]"); //字母的个数
MessageBox.Show("字节长度:" + (l.Length - 1) + "\r\n 数字个数:" + (x.Length - 1) + "\r\n 汉字的个数:" + (xx.Length - 1) + "\r\n 字母的个数:" + (xxx.Length - 1));

我用的方法是正则去判断然后把它截取出来,可能还有更好的办法,但是正则的验证速度是很快的 ^_^
还有什么问题联系我就行

更新:我把上面的Regex的命名空间给你加上了
还有你要的单词的个数附上代码
MatchCollection mc = System.Text.RegularExpressions.Regex.Matches("要检查的字符串", @"\b([a-zA-Z]+)\b|([a-zA-Z]+)");
MessageBox.Show("单词的个数:"+ mc.Count.ToString());
foreach (Match item in mc)
{
MessageBox.Show(item.Value);
}
如果你的字符串有特殊要求,联系我给你弄

别忘了 采纳我 ^_^

回答2:

function scount(str)
{
var i=0,j=0,c=0;
var t=/[a-zA-Z]+/;
var bo=false;
for(i=0,j=i+1;j<=str.length;i=j++)
{
if(t.test(str.substring(i,j))&&!bo)
{
bo=true;c++;
}
else if(!t.test(str.substring(i,j)))
{
bo=false;
}
}
return c;
}

测试 通过

你调用的时候 把字符串 做参数 传入(例如)
var b=scount("测试看怎么样吧 嘎嘎 sfsdf sdfa 32..2342 21k slsl");

回答3:

看了就知道不是 winform 的,是javascript
楼主,你好
可以通过 textbox 的textchange 事件实现
或者通过 失去焦点事件实现
在一边弄个 label 来显示结果
判断会复杂一些
汉字的话可能还需要去找 asc 码
英文的简单些
原来无非就是把字符串弄成集合或数组
再进行遍历,分类累加,最后显示个数
这是个比较简单的方法
希望对你有所帮助