3

文字列内の文字の出現をカウントする方法は?

たとえば、次の入力文字列があるとします。

test text

出力は次のようになります。

t  4
e  2
s  1
x  1
4

4 に答える 4

6

コンパイルしてテストしなくても、以下のlinqのようなものでうまくいくはずです。

from c in str
group by c into g
select new { letter= g.Key, count= g.Count()}
于 2012-12-16T04:02:53.660 に答える
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()));
}
于 2012-12-16T04:32:56.947 に答える
3

これを実行する別の方法は、ルーク・マクレガーの答えと同じです。

string mystring = "test text";
var result = mystring.GroupBy(ch => ch).Select(a => new {chr = a.Key, count = a.Count()});
于 2012-12-16T04:21:37.763 に答える
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(),""));
        }
    } 
于 2012-12-16T04:40:16.567 に答える