Javascript Function that returns true if a letter?

johntc121 picture johntc121 · Oct 19, 2016 · Viewed 19.3k times · Source

So I'm looking to write a function for my class that is titled isAlpha that accepts a character (preferably a string with length of 1) and returns true if it's a letter and false if it's not.

The thing is I'm completely stuck on where to go. This is the example the instructor gave in class:

var isAlpha = function(ch){

     //if ch is greater than or equal to "a" AND
    // ch is less than or equal to "z" then it is alphabetic

}

var ltr ="a", digit =7;
alert(isAlpha(ltr));
alert(isAlpha(digit))

I'm not sure what to do with that though, I've tried a few different things like:

var isAlpha = function(ch){
    if (ch >= "A" && ch <= "z"){
        return true
    }

}
alert(isAlpha(ch))

Can anyone point me in the right direction of how to this function started?

Answer

nnnnnn picture nnnnnn · Oct 19, 2016

You could just use a case-insensitive regular expression:

var isAlpha = function(ch){
  return /^[A-Z]$/i.test(ch);
}

If you are supposed to be following the instructions in the comments about greater than and less than comparisons, and you want to check that the input is a string of length 1, then:

var isAlpha = function(ch){
  return typeof ch === "string" && ch.length === 1
         && (ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z");
}

console.log(isAlpha("A"));      // true
console.log(isAlpha("a"));      // true
console.log(isAlpha("["));      // false
console.log(isAlpha("1"));      // false
console.log(isAlpha("ABC"));    // false because it is more than one character

You'll notice I didn't use an if statement. That's because the expression ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z" evaluates to be either true or false, so you can simply return that value directly.

What you had tried with if (ch >= "A" && ch <= "z") doesn't work because the range of characters in between an uppercase "A" and a lowercase "z" includes not only letters but some other characters that are between "Z" and "a".