在c#中计算一个长字符串内的单词

时间:2014-12-17 16:10:41

标签: c# string search count word

请您解释一下我如何以简单的方式找到某个字符串在大字符串中出现的次数? 例如:

  string longString = "hello1 hello2 hello546 helloasdf";

"你好"有四次。我怎么能得到四号。 感谢

编辑:我想知道我如何找到一个双字符串,例如:

 string longString = "hello there hello2 hello4 helloas hello there";

我想知道"你好"。

的出现次数

编辑2:正则表达式方法对我来说是最好的(有计数),但它没有找到这样的单词,例如:"> word<" 。不知何故,如果我想搜索包含"<>"它会跳过它。帮助

4 个答案:

答案 0 :(得分:1)

string longString = "hello1 hello2 hello546 helloasdf";
var regex = new Regex("hello");

var matches = regex.Matches(longString);
Console.WriteLine(matches.Count);

答案 1 :(得分:1)

只需使用string.Split()并计算结果:

string wordToFind = "hello";

string longString = "hello1 hello2 hello546 helloasdf";
int occurences = longString
                     .Split(new []{wordToFind}, StringSplitOptions.None)
                     .Count() - 1;

//occurences = 4

要回答您的修改,只需将wordToFind更改为hello there

即可

答案 2 :(得分:0)

使用LINQ执行此操作:

int count = 
    longString.Split(' ')
    .Count(str => str
    .Contains("hello", StringComparison.InvariantCultureIgnoreCase));

这里唯一的假设是你的longString由空格分隔。

答案 3 :(得分:0)

您也可以使用Linq来执行此操作。

string longString = "hello1 hello2 hello546 helloasdf";
string target = "hello";
var count = longString.Split(' ').ToList<string>().Count(w => w.Contains(target));
Console.WriteLine(count);