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