2012-12-16 50 views
3

如何统计字符串中的字符出现次数?字符串中出现字符

例如,假设我有以下的输入字符串:

test text 

输出应该是:

t 4 
e 2 
s 1 
x 1 

回答

6

无需编译和测试它像下面的LINQ的东西应该做的伎俩:

from c in str 
group by c into g 
select new { letter= g.Key, count= g.Count()} 
3

执行此操作的另一种方法与Luke McGregor的答案相同,只是不同的语法

string mystring = "test text"; 
var result = mystring.GroupBy(ch => ch).Select(a => new {chr = a.Key, count = a.Count()}); 
+0

*不同*含义**方法语法**。而Luke McGregor的答案是使用** Query Syntax **实现的。有关这两种方法的比较,请参见[LINQ(C#)中的查询语法和方法语法](http://msdn.microsoft.com/zh-cn/library/bb397947.aspx)。 – DavidRR

4
var str = "abc cccdd"; 

var group = from c in str 
      group c by c into g 
      select g; 

foreach(var g in group) 
{ 
    Console.WriteLine(string.Format("{0}\t{1}", g.Key, g.Count())); 
} 
1

递归解决方案

需要注意的是要也算空格。您可以先删除空白处。

public static void GroupString(string str) 
    { 
     if (str.Length == 1) 
      Console.WriteLine(str[0] + " 1"); 
     else 
     { 
      Console.WriteLine(str[0] + " "+ str.Count(c => c == str[0])); 
      GroupString(str.Replace(str[0].ToString(),"")); 
     } 
    } 
相关问题