我只是有一个看起来像这样的字符串:
“7,真实,NA,假:67,假,NA,假:5,假,NA,假:5,假,NA,假”
我想要做的就是计算字符串“ true ”出现在该字符串中的次数。我觉得答案就像String.CountAllTheTimesThisStringAppearsInThatString()
,但由于某种原因,我无法理解。帮助
答案 0 :(得分:166)
Regex.Matches(input, "true").Count
答案 1 :(得分:14)
可能不是最有效的,但认为这是一种巧妙的方法。
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;
}
}
答案 2 :(得分:13)
你的正则表达应该是\btrue\b
来解决Casper带来的“误解”问题。完整的解决方案如下所示:
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命名空间包含在文件的顶部。
答案 3 :(得分:5)
如果字符串可以包含“miscontrue”之类的字符串,那么这将失败。
Regex.Matches("7,true,NA,false:67,false,NA,false:5,false,NA,false:5,false,NA,false", "true").Count;
答案 4 :(得分:3)
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" );
答案 5 :(得分:3)
在这里,我将使用LINQ过度设计答案。只是表明烹饪鸡蛋的方法不仅仅是'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();
}
答案 6 :(得分:2)
这样做,请注意您必须为'test'定义正则表达式!!!
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