CodingForums.com

CodingForums.com (http://www.codingforums.com/index.php)
-   JavaScript programming (http://www.codingforums.com/forumdisplay.php?f=2)
-   -   Problem with uppercase letters :D (http://www.codingforums.com/showthread.php?t=285155)

triko 01-02-2013 04:37 PM

Problem with uppercase letters :D
 
Hi all guy!!! I have writing this code but my var word don't count the uppercase letters!!!
HOW TO FIX????
Code:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            function alphabet (letter)
            {
                var returnValueAlphabet = true;
                if (letter == "a" || letter == "b" || letter == "c" || letter == "d" || letter == "e" || letter == "f" || letter == "g" || letter == "h" || letter == "i" || letter == "j" || letter == "k" || letter == "l" || letter == "m" || letter == "n" || letter == "o" || letter == "p" ||letter == "q" || letter == "r" || letter == "s" || letter == "t" || letter == "u" || letter == "v" || letter == "w" || letter == "x" || letter == "y" || letter == "z")
                {
                    returnValueAlphabet = false;   
                }
                return returnValueAlphabet;
            }
            function start ()
            {
                var len = [];
                var count = 0;
                var phrase = 0;
                var numberWord = 0;
                var word = 0;
                var arrayPhrase = "Yesterday is history. Tomorrow is a mystery. But today is a gift. For this it is called present."; <------ *UPDATING  var arrayPhrase = ["Yesterday is history....ecc"];
                *UPDATING ---> ---> ---> ---> ---> --->    ---> ---> ---> ---> ---> --->      ---> ---> ---> ---> --->   
                for (i = 0; i < arrayPhrase.length; i++)
                {
                    if (arrayPhrase[i] == ".")
                    {
                        len[count] = numberWord;
                        numberWord = 0;
                        count++;
                        phrase++;
                    }
                    if (!alphabet (arrayPhrase[i]))
                    {
                        numberWord++;
                        word++;
                    }
                }
                alert ("Total words =" + " " + word + "\n\n" + "Total phrase =" + " " + phrase + "\n\n" + "Words in the phrase =" + " " + len.join (", "));
            }
        </script>
    </head>
    <body>
        <button type="button" onclick="start ()">TRY ME</button>
    </body>
</html>

*UPDATING, I reread my problem and call that the stringh "Yesterday...... ecc" is insert into a array!!!! And now all programs don t work....

Philip M 01-02-2013 05:17 PM

Try using .toLowerCase()

Quizmaster: A monocracy is a form of government in which how many people rule?
Contestant: Twelve.

vwphillips 01-02-2013 05:19 PM

Code:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            function alphabet (letter) {
                var returnValueAlphabet = true;
                letter =letter.toLowerCase();
                if (letter == "a" || letter == "b" || letter == "c" || letter == "d" || letter == "e" || letter == "f" || letter == "g" || letter == "h" || letter == "i" || letter == "j" || letter == "k" || letter == "l" || letter == "m" || letter == "n" || letter == "o" || letter == "p" ||letter == "q" || letter == "r" || letter == "s" || letter == "t" || letter == "u" || letter == "v" || letter == "w" || letter == "x" || letter == "y" || letter == "z")
                {
                    returnValueAlphabet = false;
                }
                return returnValueAlphabet;
            }
            function start ()
            {
                var len = [];
                var count = 0;
                var phrase = 0;
                var numberWord = 0;
                var word = 0;
                var arrayPhrase = "Yesterday is history. Tomorrow is a mystery. But today is a gift. For this it is called present.";
 //              <------ *UPDATING  var arrayPhrase = ["Yesterday is history....ecc"];
 //              *UPDATING ---> ---> ---> ---> ---> --->    ---> ---> ---> ---> ---> --->      ---> ---> ---> ---> --->
                for (i = 0; i < arrayPhrase.length; i++)
                {
                    if (arrayPhrase.charAt(i) == ".")
                    {
                        len[count] = numberWord;
                        numberWord = 0;
                        count++;
                        phrase++;
                    }
                    if (!alphabet (arrayPhrase.charAt(i)))
                    {
                        numberWord++;
                        word++;
                    }
                }
                alert ("Total words =" + " " + word + "\n\n" + "Total phrase =" + " " + phrase + "\n\n" + "Words in the phrase =" + " " + len.join (", "));
            }
        </script>
    </head>
    <body>
        <button type="button" onclick="start ()">TRY ME</button>
    </body>
</html>


Old Pedant 01-02-2013 06:32 PM

Try RECODING the entire function to be more sensible.
Code:

    function alphabet (letter)
    {
        return ( letter >= 'a' && letter <= 'z') || ( letter >= 'A' && letter <= 'Z' );
    }

** OR **
Code:

    function alphabet( letter )
    {
        var letters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
        return letter.indexOf(letter) >= 0;
    }

** OR **
Code:

    function alphabet( letter )
    {
        return ( /^[a-zA-Z]$/ ).test(letter);         
    }

** OR **
Code:

    function alphabet( letter )
    {
        return ( /^[a-z]$/i ).test(letter);         
    }

Or serveral other possible ways.

But *PLEASE* not by making 26 *SEPARATE* tests.

Old Pedant 01-02-2013 06:51 PM

Of course, there is no reason at all to even need that alphabet function.
Code:

function start ()
{
    var arrayPhrase = "Yesterday is history. Tomorrow is a mystery. But today is a gift. For this it is called present.";

    var phrases = arrayPhrase.split(".");
    var wordsPerPhrase = [ ];
    var totalWords = 0;
    for ( var p = 0; p < phrases.length - 1; ++p )
    {
        var words = phrases[p].replace(/^\s+/,"").replace(/\s+$/,"").split(" ");
        wordsPerPhrase[p] = words.length;
        totalWords += words.length;
    }
    alert (  "Total words = " + totalWords + "\n\n"
          + "Total phrases = " + phrases.length + "\n\n"
          + "Words in each phrase = " + wordsPerPhrase.join(", ")
          );
}
start();


triko 01-03-2013 05:40 PM

I don t see anyone of your method Pedant!!! xD
And your last comment!! It's a mystery for me \s+\... I don't think it's a code for beginner :D
However thanks for all example, I'll remember for the next time!!!!

triko 01-03-2013 05:45 PM

Quote:

Originally Posted by vwphillips (Post 1303590)
Code:

<!DOCTYPE HTML>
<html>
    <head>
        <script type="text/javascript">
            function alphabet (letter) {
                var returnValueAlphabet = true;
                letter =letter.toLowerCase();
                if (letter == "a" || letter == "b" || letter == "c" || letter == "d" || letter == "e" || letter == "f" || letter == "g" || letter == "h" || letter == "i" || letter == "j" || letter == "k" || letter == "l" || letter == "m" || letter == "n" || letter == "o" || letter == "p" ||letter == "q" || letter == "r" || letter == "s" || letter == "t" || letter == "u" || letter == "v" || letter == "w" || letter == "x" || letter == "y" || letter == "z")
                {
                    returnValueAlphabet = false;
                }
                return returnValueAlphabet;
            }
            function start ()
            {
                var len = [];
                var count = 0;
                var phrase = 0;
                var numberWord = 0;
                var word = 0;
                var arrayPhrase = "Yesterday is history. Tomorrow is a mystery. But today is a gift. For this it is called present.";
 //              <------ *UPDATING  var arrayPhrase = ["Yesterday is history....ecc"];
 //              *UPDATING ---> ---> ---> ---> ---> --->    ---> ---> ---> ---> ---> --->      ---> ---> ---> ---> --->
                for (i = 0; i < arrayPhrase.length; i++)
                {
                    if (arrayPhrase.charAt(i) == ".")
                    {
                        len[count] = numberWord;
                        numberWord = 0;
                        count++;
                        phrase++;
                    }
                    if (!alphabet (arrayPhrase.charAt(i)))
                    {
                        numberWord++;
                        word++;
                    }
                }
                alert ("Total words =" + " " + word + "\n\n" + "Total phrase =" + " " + phrase + "\n\n" + "Words in the phrase =" + " " + len.join (", "));
            }
        </script>
    </head>
    <body>
        <button type="button" onclick="start ()">TRY ME</button>
    </body>
</html>


Hi guy... This code don't work, my anti-bug crah when arrive at this part:
if (arrayPhrase.charAt(i) == ".")
Don't know how to works with the array!!!

Old Pedant 01-03-2013 07:50 PM

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(", ")
          );
}


vwphillips 01-04-2013 12:26 AM

Quote:

Hi guy... This code don't work, my anti-bug crah when arrive at this part:
if (arrayPhrase.charAt(i) == ".")
Don't know how to works with the array!!!
arrayPhrase is not an array it is a string

to access a specific character charAt(nu) is required

I tested the script I posted with IE and FF

triko 01-04-2013 03:05 AM

Quote:

Originally Posted by vwphillips (Post 1303893)
arrayPhrase is not an array it is a string

to access a specific character charAt(nu) is required

I tested the script I posted with IE and FF

But in my inizial post i write arrayPhrase = ["Yesterday.....];
This is an array!!! I would use an array!!!

felgall 01-04-2013 04:42 AM

Quote:

Originally Posted by triko (Post 1303921)
But in my inizial post i write arrayPhrase = ["Yesterday.....];
This is an array!!! I would use an array!!!

That would then be an array containing ONE element which is a string. Then arrayPhrase[0] will be the entire string and arrayPhrase[1] will be beyond the end of the array.

Using array notation to reference characters in a string has been recently introduced as an alternative to using charAt but there are still lots of browsers in use that don't support it.

triko 01-04-2013 04:19 PM

Quote:

Originally Posted by felgall (Post 1303944)
That would then be an array containing ONE element which is a string. Then arrayPhrase[0] will be the entire string and arrayPhrase[1] will be beyond the end of the array.

Using array notation to reference characters in a string has been recently introduced as an alternative to using charAt but there are still lots of browsers in use that don't support it.

An ok!!!! But however if I use charAt, still don't work !!!!!!!!!!!

felgall 01-04-2013 07:13 PM

Quote:

Originally Posted by triko (Post 1304045)
An ok!!!! But however if I use charAt, still don't work !!!!!!!!!!!

So what does your code look like now. Also are there any error messages on the error console?

triko 01-04-2013 10:58 PM

Quote:

Originally Posted by felgall (Post 1304066)
So what does your code look like now. Also are there any error messages on the error console?

No error in console, but I find error!!!
When I write array = ["Yehxcwj ecc...."]
the programs read this how to one element of array, so when start cicle for (i = 0; i < array.length; i++), the programs execute only one for because the length of array is 0. How to fix this problem!?!?! Beacause my problem ask: " Is stored in an array a text of char. Print the numbers of word, phrase and word for phrase!!!".
If I use an simple var the progrma work perfectly :D

Old Pedant 01-04-2013 11:07 PM

Felgall already answered that question:
Quote:

... Then arrayPhrase[0] will be the entire string ...
So just do
Code:

var text = arrayPhrase[0];
and then replace all uses of arrayPhrase after that point with text.

But I strongly suspect you are misreading the homework assignment. Or the instructor just used the wrong words. Maybe you should copy the assignment here *VERBATIM*.


All times are GMT +1. The time now is 01:43 PM.

Powered by vBulletin®
Copyright ©2000 - 2013, Jelsoft Enterprises Ltd.