资源描述:
《C#中用Split计算英文字符串中单词个数》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、C#中用Split计算英文字符串中单词个数总结作者:蒋固金在C#中,可以用Split以指定的字符分割一段字符串,返回分割后的字符串数组,要想通过该方法计算一段英文字符串中有多少个单词,应该怎样计算呢?以字符串:“MynameisJiangGujin,IcomefromChina”为例,很显然在这个字符串中含有8个单词。新建一个控制台应用程序,项目名为Test。在英文字符串中,单词与单词之间可以用'',',','.','?','!',':'分开,在主类中编写代码,代码如下:usingSystem;usingSystem.
2、Collections.Generic;usingSystem.Linq;usingSystem.Text;namespaceTest{classProgram{staticvoidMain(string[]args){stringtext="MynameisJiangGujin,IcomefromChina";string[]str=text.Split('',',','.','?','!',':');Console.WriteLine("单词个数为:{0}",str.Length);}}}运行结果:得到单词的个数为
3、8是正确的,但是每篇文章最后都要有标点符号,当我们把标点符号加上再运行一下,部分代码如下:stringtext="MynameisJiangGujin,IcomefromChina.";运行结果:这样就变成了9个,很明显的是错误的,为什么会出现这种情况,我们可以遍历这个字符串分割后返回的字符串数组,看看有什么不同。第一种情况:结尾无标点符号,部分代码如下:stringtext="MynameisJiangGujin,IcomefromChina";string[]str=text.Split('',',','.','?
4、','!',':');foreach(stringstinstr){Console.WriteLine(st);}运行结果:第二种情况:结尾有标点符号,部分代码如下:stringtext="MynameisJiangGujin,IcomefromChina.";string[]str=text.Split('',',','.','?','!',':');foreach(stringstinstr){Console.WriteLine(st);}运行结果:比较运行结果,第二次比第一次多了一行,所以第二次结果为9.为了解决
5、这个问题,我们可以简单的判断字符串的结尾有无标点符号,部分代码如下:stringtext="MynameisJiangGujin,IcomefromChina";string[]str=text.Split('',',','.','?','!',':');if(char.IsLetter(text[text.Length-1])){Console.WriteLine("单词个数为:{0}",str.Length);}else{Console.WriteLine("单词个数为:{0}",str.Length-1);}运行
6、结果:此结果是正确的,但随之而来的又有一个问题,例如当我们在输入一段字符串的时候,结尾有可能会出现标点符号后又多空了一格,或在字符串内部连续几个空格等情况都会造成计数的错误,例如当我们把字符串的结尾处加上两个句号时,运行结果就会出错。部分代码:stringtext="MynameisJiangGujin,IcomefromChina..";运行结果:造成这种现象的原因是当Split在以指定字符拆分字符串时,会把最后的空字符串也返回到子字符串数组中,这样就造成了返回的结果比实际值多,为了解决这个问题,我们可以遍历返回的字
7、符串数组,用计数器的形式累加,如果出现空字符串则不计入总数,部分代码如下:intcount=0;stringtext="MynameisJiangGujin,IcomefromChina";string[]str=text.Split('',',','.','?','!',':');foreach(stringstinstr)if(!st.Equals(""))count++;Console.WriteLine("单词个数为:{0}",count);运行结果:以上内容皆为个人思考与感悟,仅供参考!