public class StringWordCount {
public static int countWords(String s) {
int wordCount = 0;
boolean word = false;
int endOfLine = s.length() - 1;
for (int i = 0; i < s.length(); i++) {
// if the char is a letter, it's a word.
if (Character.isLetter(s.charAt(i)) && i != endOfLine) {
word = true;
// if char isn't a letter and there have been letters before, wordCount goes up.
} else if (!Character.isLetter(s.charAt(i)) && word) {
// if not an apostrophe, count the word
if (s.charAt(i) != '\'') {
wordCount++;
word = false;
// else if (an apostrophe) AND the letter before was an apostrophe, count the word
} else if (s.charAt(i-1) == '\'') {
wordCount++;
word = false;
}
// last word of String; if it doesn't end with a non letter, it wouldn't count without this.
} else if (Character.isLetter(s.charAt(i)) && i == endOfLine) {
wordCount++;
}
}
return wordCount;
}
}
DOWNLOAD
Created: January 22, 2014
Completed in full by: Michael Yaworski