C#如何实现字数统计?

dvdvip 2009-03-24 09:04:49
在Form1里面,有一个TextBox1, 设置为多行。点击按钮后,就弹出对话框,显示字数统计。就是像Word一样的,不是显示字符数。而是显示有多少个英文单词。而且,要忽略空格,回车换行符,和标点符号。用C#如何实现?

private void Button1_Click(object sender,EventArgs e)
{MessaageBox.Show("The word count of your article is: ")+TextBox1的单词数;}
...全文
1004 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
ainidewen0502 2009-08-17
  • 打赏
  • 举报
回复
7楼的那个的 判断汉字的那个好像不是很准确啊 不知道是怎么回事的啊 请您在帮忙 看看
wewei123shangdawei 2009-04-21
  • 打赏
  • 举报
回复
7楼的方法试试
claymore1114 2009-03-24
  • 打赏
  • 举报
回复

public void Count(string s)
{
string str1 = "abcdefghijklmnopqrstuvwxyz";
string str2 = "0123456789";
int L = 0;//字母个数
int N = 0;//数字个数
int O = 0;//其他字符
int sp = 0;//空格字数
int C = 0;//汉字字数
int T = 0;//总数
string casestr = "";
for (int i = 0; i < s.Length; i++)
{
casestr = s.Substring(i, 1);
if (str1.IndexOf(casestr) != -1)
{
L = L + 1;
}
else if (str1.ToUpper().IndexOf(casestr) != -1)
{
L = L + 1;
}
else if (str2.IndexOf(casestr) != -1)
{
N = N + 1;
}
else if (casestr == " ")
{
sp = sp + 1;
}
else if (validateName(casestr))
{
C = C + 1;
}
else
{
O = O + 1;

}

}
T = L+ N + sp + C + O;
Response.Write("字母数:"+L);
Response.Write("<br>");
Response.Write("数字数:"+N);
Response.Write("<br>");
Response.Write("空格数:"+sp);
Response.Write("<br>");
Response.Write("汉字数:" + C);
Response.Write("<br>");
Response.Write("其他字符数:"+O);
Response.Write("<br>");
Response.Write("总字符数:" + T);
}
public bool validateName(string str)
{
return Regex.IsMatch(str, "^[\u4E00-\u9FA5]{0,}$");//判断汉字
}
protected void Button1_Click(object sender, EventArgs e)
{

string S =TextBox1.Text.ToString();
Count(S);
}
claymore1114 2009-03-24
  • 打赏
  • 举报
回复
UP
wuyq11 2009-03-24
  • 打赏
  • 举报
回复
http://blog.csdn.net/shouhusun/archive/2008/05/04/2384752.aspx
wuyi8808 2009-03-24
  • 打赏
  • 举报
回复
MessaageBox.Show
(
"The word count of your article is: " +
System.Text.RegularExpressions.Regex.Matches(s, @"\w+").Count
);
cellblue 2009-03-24
  • 打赏
  • 举报
回复
笼统来说,正则,但是有点小困难,如果你的文字仅英文,每个单词都空格,直接用string [] mStrSplit = YourTextString.Split(' '),然后取mStrSplit.Length-1即可
cppfaq 2009-03-24
  • 打赏
  • 举报
回复
http://www.cnblogs.com/longqi293/archive/2008/11/22/1339126.html
稍微改了下小BUG

private void button1_Click(object sender, EventArgs e)
{
string test = textBox1.Text.Replace(". ", ".").Replace(", ", ",").TrimEnd('.'); int i = CountWords(test);
MessageBox.Show(i.ToString());
}

public int CountWords(string input)
{
int len = 0;

string s = input.Replace("\r", " ").Replace("\n", " "); //去除回车和换行
Regex regex = new Regex(@"\s+");
s = regex.Replace(s, " ");
//空格
string[] sAl = s.Split(' ');

for (int i = 0; i < sAl.Length; i++)
{
//逗号
string[] sDh = sAl[i].Split(',');

for (int j = 0; j < sDh.Length; j++)
{
//句号
string[] sJh = sDh[j].Split('.');

for (int k = 0; k < sJh.Length; k++)
{
if (sJh[k] != " ")
len++;
}
}
}
return len;
}
wuyi8808 2009-03-24
  • 打赏
  • 举报
回复
用正则。

110,534

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧