忽略区分大小写

时间:2015-11-05 00:21:07

标签: c#

我必须计算来自给定输入文本的每个单词出现多少次。 我被困的事情:应该忽略字符大小差异。

例如:"你在这里。你是" - >输出:

are=1
here=1
You=3

我做了什么:

string text = "You are here.You you";
IDictionary<string, int> wordsCount = new SortedDictionary<string, int>();
string[] words = text.Split(' ',',','.','-','!');

foreach (string word in words)
{
    int count = 1;
    if (wordsCount.ContainsKey(word))
        count = wordsCount[word] + 1;
    wordsCount[word] = count;
}
var items = from pair in wordsCount
            orderby pair.Value ascending
            select pair;
foreach (var p in items)
{
    Console.WriteLine("{0} -> {1}", p.Key, p.Value);
}

如果不手动检查给定文本中的每个单词,都有可能实现这一目标吗?例如,如果我有一个很长的段落,不使用特定方法检查每个单词?

2 个答案:

答案 0 :(得分:1)

添加

for(i = 0; text[i] != '\0'; i++){
    text[i] = text[i].ToLower();
}

但由于text是一个字符串,只需执行:

text = text.ToLower();

string[] words = text.Split(' ',',','.','-','!');行之前。 然后享受!

答案 1 :(得分:0)

linq怎么样?

var text = "You are here.You you";
var words = text.Split(' ', ',', '.', '-', '!');

words
    .GroupBy(word => word.ToLowerInvariant())
    .OrderByDescending(group => group.Count())
    .ToList()
    .ForEach(g=> Console.WriteLine(g.Key + "=" + g.Count()));