How would you count occurrences of a string (actually a char) within a string?

If you’re using .NET 3.5 you can do this in a one-liner with LINQ:

int count = source.Count(f => f == "");

If you don’t want to use LINQ you can do it with:

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

You might be surprised to learn that your original technique seems to be about 30% faster than either of these! I’ve just done a quick benchmark with “/once/upon/a/time/” and the results are as follows:

Your original = 12s
source.Count = 19s
source.Split = 17s
foreach (from bobwienholt’s answer) = 10s

(The times are for 50,000,000 iterations so you’re unlikely to notice much difference in the real world.)

Leave a Comment