Javascript 函数表示 returns 如果一个字母为真?
Javascript Function that returns true if a letter?
所以我想为我的 class 编写一个名为 isAlpha
的函数,它接受一个字符(最好是长度为 1 的字符串)并且 returns true 如果这是一封信,如果不是,则为假。
问题是我完全不知道该去哪里。这是导师在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))
虽然我不确定该怎么做,但我尝试了一些不同的方法,例如:
var isAlpha = function(ch){
if (ch >= "A" && ch <= "z"){
return true
}
}
alert(isAlpha(ch))
任何人都可以指出如何启动此功能的正确方向吗?
您可以只使用不区分大小写的 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" 和 "a" 之间。
首先确定它是一个字符串,然后使用正则表达式。
var isAlpha = function(ch){
return typeof ch === "string" && ch.length === 1 && /[A-Za-z]/.test(ch);
}
如果您只需要一个字符:
var isAlpha = function(ch){
return /^[A-Za-z]{1,1}$/.test(ch)
}
注意这里的{1,1}
表示该字符至少出现一次,至多出现一次。如果你只测试一个字符你可以去掉这个{1,1}
,如果你想测试一个以上的字符,你可以根据你的要求更新这个{n,m}
。
regex是你的朋友。
var isAlpha = function(ch){
return ch.match(/[0-9]/) != null
}
所以我想为我的 class 编写一个名为 isAlpha
的函数,它接受一个字符(最好是长度为 1 的字符串)并且 returns true 如果这是一封信,如果不是,则为假。
问题是我完全不知道该去哪里。这是导师在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))
虽然我不确定该怎么做,但我尝试了一些不同的方法,例如:
var isAlpha = function(ch){
if (ch >= "A" && ch <= "z"){
return true
}
}
alert(isAlpha(ch))
任何人都可以指出如何启动此功能的正确方向吗?
您可以只使用不区分大小写的 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" 和 "a" 之间。
首先确定它是一个字符串,然后使用正则表达式。
var isAlpha = function(ch){
return typeof ch === "string" && ch.length === 1 && /[A-Za-z]/.test(ch);
}
如果您只需要一个字符:
var isAlpha = function(ch){
return /^[A-Za-z]{1,1}$/.test(ch)
}
注意这里的{1,1}
表示该字符至少出现一次,至多出现一次。如果你只测试一个字符你可以去掉这个{1,1}
,如果你想测试一个以上的字符,你可以根据你的要求更新这个{n,m}
。
regex是你的朋友。
var isAlpha = function(ch){
return ch.match(/[0-9]/) != null
}