我在.NET中有一个字符串,如下所示:
string str = "Lorem ipsum is great. lorem ipsum Lorem...";
我需要计算与案例匹配的所有“Lorem”。所以Lorem应该出现两次而忽略了lorem。
感谢。
答案 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);
编辑:您已经评论过“Lorem Loremo”将计为2,因此您希望计算给定单词的所有出现次数(case-sentive),即使该单词是另一个单词的一部分。然后你可以使用String.Contains
:
int count = str.Split(new[]{' ','.'}, StringSplitOptions.None)
.Count(w => w.Contains(searchWhat));
答案 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;
希望它会对你有所帮助。如果没有,请告诉我。