计算字符串中的文本

时间:2012-10-22 21:02:31

标签: c#

我在.NET中有一个字符串,如下所示:

string str = "Lorem ipsum is great. lorem ipsum Lorem...";

我需要计算与案例匹配的所有“Lorem”。所以Lorem应该出现两次而忽略了lorem。

感谢。

6 个答案:

答案 0 :(得分:8)

string str = "Lorem ipsum is great. lorem ipsum Lorem...";
string word = "Lorem";
Console.WriteLine(Regex.Matches(str,word).Count);

答案 1 :(得分:6)

您可以使用Linq。

String searchWhat = "Lorem";
int count = str.Split(new[]{' ','.'}, StringSplitOptions.None)
               .Count(w => w == searchWhat);

演示:http://ideone.com/a9XHln

编辑:您已经评论过“Lorem Loremo”将计为2,因此您希望计算给定单词的所有出现次数(case-sentive),即使该单词是另一个单词的一部分。然后你可以使用String.Contains

int count = str.Split(new[]{' ','.'}, StringSplitOptions.None)
               .Count(w => w.Contains(searchWhat));

演示:http://ideone.com/fxDGuf

答案 2 :(得分:0)

可以使用Linq完成:

string str = "Lorem ipsum is great. lorem ipsum Lorem...";
int loremCount = str.Split(new[]{' ','.',','}, StringSplitOptions.None).Count(s => s.Equals("Lorem"));

如果你想考虑“Loremo”:

int loremCount = str.Count(s => s.Equals("Lorem"));

答案 3 :(得分:0)

这是我的2美分。它会发现“Lorem”案例的所有实例都具有敏感性,但它会为其中包含“Lorem”的内容返回一个计数,例如“Lorem”或“thismightnotLorembewhatyouwant”。

这个问题有点模糊,所以这个答案是一个符合你要求的快速解决方案。

string test = "Lorem ipsum is great. lorem ipsum Lorem...";

int pos = -1;
int count = 0;
while ((pos = test.IndexOf("Lorem", pos+1)) != -1)
    count++;

答案 4 :(得分:0)

如果您希望能够执行其他操作,可以将整个字符串转储到List中,然后就可以从该列表中运行Linq查询。

var phrase = "Lorem ipsum...";
var wordList = phrase.Split(' ').ToList();
var loremCount = wordList.Where(x => x.ToLower() == "lorem").Count();

这样wordList可以重复使用。

答案 5 :(得分:0)

使用以下代码:

using System.Text.RegularExpressions;

string text = "Lorem ipsum is great. lorem ipsum Lorem...";
int count = new Regex("Lorem").Matches(text).Count;

希望它会对你有所帮助。如果没有,请告诉我。