计算数组中字符串的出现次数

时间:2012-08-15 10:10:48

标签: c# arrays string count

我正在计算数组中存在多少个字符串 -

Tags = "the cat the mat the sat";

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

int counter = 0;

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

    }
}

但是,如何修改我的代码,以便计算每个字符串的出现次数。 例如 -

  • “the”= 3
  • “cat”= 1
  • “mat”= 1
  • “sat”= 1

然后以某种方式存储这些值?

4 个答案:

答案 0 :(得分:7)

您没有说出您使用的语言,但我认为它看起来像c#。这是一种方法。

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

答案 1 :(得分:5)

试试这个:

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。

答案 2 :(得分:0)

存储在地图中,其中键是单词,值是计数器出现次数的计数器....

答案 3 :(得分: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);
        }