Подтвердить что ты не робот

Подсчитайте количество строк, появляющихся в строке

У меня просто строка, которая выглядит примерно так:

"7, правда, Н. А., ложно: 67, ложная, Н. А., ложно: 5, ложная, Н. А., ложно: 5, ложно, Н. А., ложно"

Все, что я хочу сделать, - это подсчитать, сколько раз в этой строке появляется строка true. Я чувствую, что ответ - это что-то вроде String.CountAllTheTimesThisStringAppearsInThatString(), но по какой-то причине я просто не могу понять это. Помощь?

4b9b3361

Ответ 1

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

Ответ 2

Вероятно, не самый эффективный, но думаю, что это простой способ сделать это.

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;
    }
}

Ответ 3

Ваше регулярное выражение должно быть \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 включено в верхнюю часть файла.

Ответ 4

Это не удастся, хотя если строка может содержать строки типа "miscontrue".

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

Ответ 5

С 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" );

Ответ 6

Здесь я переконструирую ответ, используя 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();
}

Ответ 7

сделайте это, обратите внимание, что вам нужно будет определить регулярное выражение для '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