在C#中用字符串分隔单词

时间:2013-12-04 23:34:46

标签: c#

所以我正在攻读大学学位课程。第一个要求是显示字母表中每个字母出现在字符串中的次数。现在进一步开发这个程序我想在列表中显示字符串中的所有单词。这是我当前的代码。

public void occurances()
{
   string sentence;

   Console.WriteLine("\n");
   Console.WriteLine("Please enter a random sentence and press enter");
   Console.WriteLine("\n");

   var occurances = new Dictionary<char, int>();
   var words = occurances;

   //a for each loop, and within it, the char variable is a assigned named "characters"
   //The value "characters" will represent all the characters in the sentence string.
   sentence = Console.ReadLine();

   foreach (char characters in sentence)
   {
      //if the sentence contains characters 
      if (occurances.ContainsKey(characters))
      //add 1 to the value of occurances 
      occurances[characters] = occurances[characters] + 1;

      //otherwise keep the occurnaces value as 1
      else
         occurances[characters] = 1;
   }

   foreach (var entry in occurances)
   {
      //write onto the screen in position 0 and 1, where 0 will contain the entry key
      // and 1 will contain the amount of times the entry has been entered
      Console.WriteLine("{0}: {1}", entry.Key, entry.Value);
   }
   //Pause
   Console.ReadLine();
}

2 个答案:

答案 0 :(得分:1)

第一要求:

var charGroups =  sentence.GroupBy(x => x).OrderByDescending(x => x.Count());

第二项要求:

How to: Count Occurrences of a Word in a String (LINQ)

答案 1 :(得分:1)

我认为最简单的方法就是:

 var WordList = YourString.Split(' ').toList(); // Making the list of words

 var CharArray = YourString.toCharArray(); // Counting letters 
 var q = from x in CharArray
         group x by x into g
         let count = g.Count()
         orderby count descending
         select new {Value = g.Key, Count = count};
相关问题