View Single Post
Old 01-03-2013, 07:50 PM   PM User | #8
Old Pedant
Supreme Master coder!

 
Old Pedant's Avatar
 
Join Date: Feb 2009
Posts: 23,190
Thanks: 59
Thanked 3,995 Times in 3,964 Posts
Old Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to allOld Pedant is a name known to all
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(", ")
          );
}
__________________
An optimist sees the glass as half full.
A pessimist sees the glass as half empty.
A realist drinks it no matter how much there is.
Old Pedant is online now   Reply With Quote