Ответ 1
Regex.Matches(input, "true").Count
У меня просто строка, которая выглядит примерно так:
"7, правда, Н. А., ложно: 67, ложная, Н. А., ложно: 5, ложная, Н. А., ложно: 5, ложно, Н. А., ложно"
Все, что я хочу сделать, - это подсчитать, сколько раз в этой строке появляется строка true. Я чувствую, что ответ - это что-то вроде String.CountAllTheTimesThisStringAppearsInThatString()
, но по какой-то причине я просто не могу понять это. Помощь?
Regex.Matches(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;
}
}
Ваше регулярное выражение должно быть \btrue\b
, чтобы обойти проблему "недоразумения", которую поднимает Каспер. Полное решение будет выглядеть следующим образом:
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 включено в верхнюю часть файла.
Это не удастся, хотя если строка может содержать строки типа "miscontrue".
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. Просто показывает, что существует больше, чем "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();
}
сделайте это, обратите внимание, что вам нужно будет определить регулярное выражение для '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