计算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