Comment compter les occurrences d'un caractère/chaîne dans une chaîne ?

Comment compter les occurrences d’un caractère/chaîne dans une chaîne ?

Si vous utilisez .NET 3.5, vous pouvez le faire en une seule ligne avec LINQ :

int count = source.Count(f => f == '/');

Si vous ne voulez pas utiliser LINQ, vous pouvez le faire avec :

int count = source.Split('/').Length - 1;

Vous pourriez être surpris d’apprendre que votre technique originale semble être environ 30 % plus rapide que l’une ou l’autre de ces méthodes ! J’ai fait un rapide benchmark avec “/once/upon/a/time/” et les résultats sont les suivants :

Votre original = 12s

source.Count = 19s

source.Split = 17s

foreach (de la réponse de bobwienholt) = 10s

(Les temps sont pour 50 000 000 itérations, donc vous ne remarquerez probablement pas beaucoup de différence dans le monde réel.)