My code explained:
Code:
function start ()
{
var arrayPhrase = "Yesterday is history. Tomorrow is a mystery. But today is a gift. For this it is called present.";
// split breaks a sting into an ARRAY of strings, all broken
// apart on the character (or regular expression) you give:
var phrases = arrayPhrase.split(".");
// so now we have each sentence (that used to end in a period)
// in a separate element of the array named phrases
var wordsPerPhrase = [ ];
var totalWords = 0;
// loop through all the phrases/sentences in the phrases array
// notice that we do *NOT* process the last element of the array
// because it will be the blank string after the last period
for ( var p = 0; p < phrases.length - 1; ++p )
{
// this is the trickiest part, so let's break it down in pieces:
// phrases[p] :: get one phrase from the array
// .replace(/^\s+/,"") :: replace all *leading* spaces with nothing
// .replace(/\s+$/,"") :: replace all *trailing* spaces with nothing
// (in other words, trim the spaces off both ends
// .split(" "); :: split the phrase into words, just as we split into phrases
var words = phrases[p].replace(/^\s+/,"").replace(/\s+$/,"").split(" ");
// so now we have an array named words...and it has as many elements
// as there are words in the phrase!
// put the count of words in to proper element of the wordsPerPhrase array
wordsPerPhrase[p] = words.length;
// and bump the count of the total number of words
totalWords += words.length;
}
// and then just show the final numbers:
// I corrected the value for Total Phrases from my prior post
alert ( "Total words = " + totalWords + "\n\n"
+ "Total phrases = " + (phrases.length-1) + "\n\n"
+ "Words in each phrase = " + wordsPerPhrase.join(", ")
);
}