I would approach it in a more simplified manner since you have indicated that a space can be used reliably as a delimiter like so:
var str = " the string to split and count ";
var wordCount = str.Trim().Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries).Count();
EDIT:
If optimal perforamnce is necessary and memory usage is a concern you could write your own method and leverage IndexOf()
(although there are many avenues for implementation on a problem like this, I just prefer reuse rather than from-scratch code design):
public int WordCount(string s) {
const int DONE = -1;
var wordCount = 0;
var index = 0;
var str = s.Trim();
while (index != DONE) {
wordCount++;
index = str.IndexOf(" ", index + 1);
}
return wordCount;
}