63 votes

Compter le nombre de fois qu'une chaîne s'affiche au sein d'une chaîne

J'ai simplement une chaîne de caractères qui ressemble à quelque chose comme ceci:

"7,fidèle,NA,faux:67,false NA false:5,false NA false:5,false NA false"

Tout ce que je veux faire est de compter combien de fois la chaîne "true" apparaît dans cette chaîne. Je me sens comme la réponse est quelque chose comme Chaîne de caractères.CountAllTheTimesThisStringAppearsinthatstring (), mais pour une raison que je ne peux pas le comprendre. De l'aide?

199voto

µBio Points 6959
Regex.Matches( input,  "true" ).Count

16voto

rjdevereux Points 535

Probablement pas le plus efficace, mais pense que c'est une bonne façon de le faire.

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

14voto

DonaldRay Points 373

Votre expression régulière doit être \btrue\b pour obtenir autour de la " miscontrue problème de Casper apporte vers le haut. La solution complète devrait ressembler à ceci:

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

Assurez-vous que le Système.Texte.Espace de noms RegularExpressions est inclus dans le haut du fichier.

5voto

Casper Points 373

On va à l'échec, si la chaîne peut contenir des chaînes de caractères comme "miscontrue".

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

3voto

Jace Rhea Points 3186

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X