C#判断单词个数方法总结

我们给大家总计了C#中判断英文单词个数的方法以及排序的技巧,对此有需要的朋友可以测试下。

方法一:

判断英文单词个数:

 using System; namespace FindWord { class Program { static void Main(string[] args) { string space = " "; string str = "hello world" + space; int count = 0; bool start = false; for (int i=0;i

方法二:

C#统计英文字符串中单词个数思路如下:

1.使用的Hashtable(高效)集合,记录每个单词出现的次数

2.采用ArrayList对Hashtable中的Keys按字母序排列

3.排序使用插入排序(稳定)

 public void StatisticsWords(string path) {   if (!File.Exists(path))   {   Console.WriteLine("文件不存在!");   return;   }   Hashtable ht = new Hashtable(StringComparer.OrdinalIgnoreCase);   StreamReader sr = new StreamReader(path, System.Text.Encoding.UTF8);   string line = sr.ReadLine();   string[] wordArr = null;   int num = 0;   while (line.Length > 0)   {   //  MatchCollection mc = Regex.Matches(line, @"\b[a-z]+", RegexOptions.Compiled | RegexOptions.IgnoreCase);   //foreach (Match m in mc)   //{   //  if (ht.ContainsKey(m.Value))   //  {   //    num = Convert.ToInt32(ht[m.Value]) + 1;   //    ht[m.Value] = num;   //  }   //  else   //  {   //    ht.Add(m.Value, 1);   //  }   //}   //line = sr.ReadLine();   wordArr = line.Split(' ');   foreach (string s in wordArr)   {   if (s.Length == 0)   continue;   //去除标点   line = Regex.Replace(line, @"[\p{P}*]", "", RegexOptions.Compiled);   //将单词加入哈希表   if (ht.ContainsKey(s))   {   num = Convert.ToInt32(ht[s]) + 1;   ht[s] = num;   }   else   {   ht.Add(s, 1);   }   }   line = sr.ReadLine();   } ArrayList keysList = new ArrayList(ht.Keys);   //对Hashtable中的Keys按字母序排列   keysList.Sort();   //按次数进行插入排序【稳定排序】,所以相同次数的单词依旧是字母序   string tmp = String.Empty;   int valueTmp = 0;   for (int i = 1; i  0 && valueTmp > (int)ht[keysList[j - 1]])   {   keysList[j] = keysList[j - 1];   j--;   }   keysList[j] = tmp;//j=0   }   //打印出来   foreach (object item in keysList)   {   Console.WriteLine((string)item + ":" + (string)ht[item]);   }   }

以上就是C#判断单词个数方法总结的详细内容,更多请关注0133技术站其它相关文章!

赞(0) 打赏
未经允许不得转载:0133技术站首页 » 其他教程