Question: taken a string example as `550e8400-e29b-41d4-a716-446655440000` how can one **count how many** `-` chars are in such string?

I'm currently using:

```
int total = "550e8400-e29b-41d4-a716-446655440000".Split('-').Length + 1;

```

Is there any method that we don't need to add 1... like using the `Count` maybe?

All other methods such as

`Contains` `IndexOf` etc only return the first position and a `boolean` value, nothing returns **how many** were found.

what am I missing?

Answer: 
You can use the LINQ method [`Enumerable.Count`](http://msdn.microsoft.com/en-us/library/bb535181.aspx) for this purpose (note that a `string` is an `IEnumerable<char>`):

```
int numberOfHyphens = text.Count(c => c == '-');

```

The argument is a `Func<char, bool>`, a predicate that specifies when an item is deemed to have 'passed' the filter.

This is (loosely speaking) equivalent to:

```
int numberOfHyphens = 0;

foreach (char c in text)
{
    if (c == '-') numberOfHyphens++;
}

```
The most straight forward method is to simply loop throught the characters, as that is what any algorithm has to do some way or the other:

```
int total = 0;
foreach (char c in theString) {
  if (c == '-') total++;
}

```

You can use extension methods to do basically the same:

```
int total = theString.Count(c => c == '-');

```

Or:

```
int total = theString.Aggregate(0, (t,c) => c == '-' ? t + 1 : t)

```

Then there are interresting (but less efficient) tricks like removing the characters and compare the lengths:

```
int total = theString.Length - theString.Replace("-", String.Empty).Length;

```

Or using a regular expression to find all occurances of the character:

```
int total = Regex.Matches(theString, "-").Count;

```