0

配列に存在する文字列の数を数えています-

Tags = "the cat the mat the sat";

string[] words = Tags.Split(' ');

int counter = 0;

foreach (string item in words)
{
    if (item != "")
    {
      counter++;

    }
}

ただし、すべての文字列の出現をカウントするようにコードを変更するにはどうすればよいでしょうか。たとえば、

  • 「その」= 3
  • 「猫」= 1
  • 「マット」= 1
  • 「土」= 1

そして、これらの値を何らかの方法で保存しますか?

4

4 に答える 4

9

どの言語を使用しているかはわかりませんが、C# のように見えます。ここにそれを行う1つの方法があります。

    Dictionary<string, int> dictionary = new Dictionary<string, int>();
    foreach (string word in words)
    {
        if (dictionary.ContainsKey(word))
        {
            dictionary[word] += 1; 
        }
        else
        {
            dictionary.Add(word,1);
        }
    }
于 2012-08-15T10:21:21.850 に答える
6

これを試して:

var result = tags.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries)
                 .GroupBy(tag => tag)
                 .ToDictionary(group => group.Key, group => group.Count());

var max = result.MaxBy(kvp => kvp.Value);
var min = result.MinBy(kvp => kvp.Value);

MoreLINQ のMaxByと MinBy を使用します。

于 2012-08-15T10:29:39.417 に答える
0

キーが単語で、値が出現回数のカウンターであるマップに保存します。

于 2012-08-15T10:20:53.180 に答える
0

辞書を使用する必要があります。ここにあります:

        string Tags = "the cat the mat the sat";

        string[] words = Tags.Split(' ');

        Dictionary<string, int> oddw = new Dictionary<string, int>();

        foreach (string item in words)
        {
            if (item != "")
            {
                if (oddw.ContainsKey(item) == false)
                {
                    oddw.Add(item, 1);
                }
                else
                {
                    oddw[item]++;
                }
            }
        }

        foreach (var item in oddw)
        {
            Console.WriteLine(item);
        }
于 2012-08-15T10:25:36.357 に答える