如何在字符串List中找到最多出现的字符串?

时间:2014-03-14 14:23:23

标签: c# .net

示例输入:

List<string> input = new List<string>();
input.Add("\nHello \nWorld");
input.Add("My \nname \nis \John");
input.Add("\n\n\n\n Just for fun \n\n");

目标字符串:“\ n”

预期输出:“ \ n \ n \ n \ n只是为了好玩\ n \ n 最多”\ n“,出现次数为 6

备注:

  1. 搜索字符串不区分大小写,\ n和\ N应视为2次出现。
  2. 用户将输入要查找的字符串。 \ n只是一个例子。在上面的示例中,如果用户输入“m”,则预期输出为我的\ nname \ nis \ John ,出现2次

1 个答案:

答案 0 :(得分:1)

您可以使用:

var MaxIndex =  input.Select((r, i) => 
                new 
                { 

                  OccuranceCount = r.Count(c =>  char.ToUpperInvariant(c) == char.ToUpperInvariant(searchChar)),                         
                  Index = i 
                })
             .OrderByDescending(t => t.OccuranceCount)
             .FirstOrDefault();

所以对于以下代码:

List<string> input = new List<string>();
input.Add("\nHello \nWorld");
input.Add("My \nname \nis John");
input.Add("\n\n\n\n Just for fun \n\n");

char searchChar = '\n';

var MaxIndex =  input.Select((r, i) => 
                new 
                { 

                  OccuranceCount = r.Count(c =>  char.ToUpperInvariant(c) == char.ToUpperInvariant(searchChar)),                         
                  Index = i 
                })
             .OrderByDescending(t => t.OccuranceCount)
             .FirstOrDefault();

Console.WriteLine("Line: {0}, Occurance Count: {1}", input[MaxIndex.Index], MaxIndex.OccuranceCount);