计算string出现在string中的次数

我只是有一个像这样的string:

“7,真实,NA,假:67,假,NA,假:5,假,NA,假:5,假,NA,假”

我想要做的就是统计string中出现“true”string的次数。 我感觉像答案是像String.CountAllTheTimesThisStringAppearsInThatString(),但由于某种原因,我只是无法弄清楚。 帮帮我?

Regex.Matches(Regex.Escape(input), "true").Count 

可能不是最有效的,但认为这是一个干净的方式来做到这一点。

 class Program { static void Main(string[] args) { Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true")); Console.WriteLine(CountAllTheTimesThisStringAppearsInThatString("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "false")); } static Int32 CountAllTheTimesThisStringAppearsInThatString(string orig, string find) { var s2 = orig.Replace(find,""); return (orig.Length - s2.Length) / find.Length; } } 

你的正则expression式应该是\btrue\b来解决Casper带来的'miscontrue'问题。 完整的解决scheme将如下所示:

 string searchText = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false"; string regexPattern = @"\btrue\b"; int numberOfTrues = Regex.Matches(searchText, regexPattern).Count; 

确保System.Text.RegularExpressions名称空间包含在文件的顶部。

这将失败,虽然如果string可以包含像“miscontrue”string。

  Regex.Matches("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true").Count; 

与Linq …

 string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false"; var count = s.Split(new[] {',', ':'}).Count(s => s == "true" ); 

在这里,我将使用LINQ过度构build答案。 只是表明,有超过'n'方法煮鸡蛋:

 public int countTrue(string data) { string[] splitdata = data.Split(','); var results = from p in splitdata where p.Contains("true") select p; return results.Count(); } 

这样做,请注意,你将不得不定义正则expression式'testing'!

 string s = "7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false"; string[] parts = (new Regex("")).Split(s); //just do a count on parts