所以我想为我的类编写一个名为isAlpha
的函数,它接受一个字符(最好是一个长度为1的字符串),如果是一个字母则返回true,如果不是则返回false。
问题是我完全被困在哪里去了。这是教师在课堂上给出的例子:
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))
我不知道该如何处理,我尝试了一些不同的东西,如:
var isAlpha = function(ch){
if (ch >= "A" && ch <= "z"){
return true
}
}
alert(isAlpha(ch))
有人能指出我如何开始这个功能的正确方向吗?
答案 0 :(得分:8)
您可以使用不区分大小写的regular expression:
var isAlpha = function(ch){
return /^[A-Z]$/i.test(ch);
}
如果您应该遵循评论中关于大于和小于比较的说明,并且您想检查输入是否为长度为1的字符串,则:
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
你会注意到我没有使用if
声明。这是因为表达式ch >= "a" && ch <= "z" || ch >= "A" && ch <= "Z"
评估为true
或false
,因此您可以直接return
该值。
您使用if (ch >= "A" && ch <= "z")
尝试的内容不起作用,因为大写“A”和小写“z”之间的字符范围不仅包括字母,还包括“Z”之间的其他字符和“一”。
答案 1 :(得分:3)
首先确保它是一个字符串,然后使用正则表达式。
var isAlpha = function(ch){
return typeof ch === "string" && ch.length === 1 && /[A-Za-z]/.test(ch);
}
答案 2 :(得分:0)
如果它只需要一个字符:
ngModel.$formatters
请注意,此处的var isAlpha = function(ch){
return /^[A-Za-z]{1,1}$/.test(ch)
}
表示该字符至少出现一次,最多出现一次。如果您只测试一个字符,则可以删除此{1,1}
,如果您要测试多个字符,可以根据需要将其更新为{1,1}
。
答案 3 :(得分:-1)
regex是你的朋友。
var isAlpha = function(ch){
return ch.match(/[0-9]/) != null
}