johntc121 johntc121 - 1 month ago 6
Javascript Question

Javascript Function that returns true if a letter?

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

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".

Comments