字符串中字母出现次数

3
如何计算字符串中字符出现的次数?
例如,假设我有以下输入字符串:
test text

输出应该是:
t  4
e  2
s  1
x  1
4个回答

6

如果不进行编译和测试,可以使用类似下面的linq:

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

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()));
}

3

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

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

“不同”的意思是“方法语法”。而Luke McGregor的答案则是使用“查询语法”实现的。关于这两种方法的比较,请参见LINQ(C#)中的“查询语法和方法语法”(http://msdn.microsoft.com/en-us/library/bb397947.aspx)。 - DavidRR

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(),""));
        }
    } 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接