如果一个字母返回true的Javascript函数?

Posted

技术标签:

【中文标题】如果一个字母返回true的Javascript函数?【英文标题】:Javascript Function that returns true if a letter? 【发布时间】:2017-02-28 11:24:34 【问题描述】:

所以我正在为我的类编写一个名为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))

谁能指出我如何启动此功能的正确方向?

【问题讨论】:

你的问题是什么?您只需严格按照说明操作即可。 用匹配函数试试正则表达式。 @但您无法按照讲师提供给您的指示...“如果 ch 大于或等于“a””在任何编程语言中都不会被翻译成 if (ch &gt;= "A"... 显然那么你需要完整的代码。 好吧,我没有把它放在问题中,但我的指示说它必须接受大写和小写。据我了解,“A”的价值低于“a”。但是你没有理由这么粗鲁。 【参考方案1】:

您可以只使用不区分大小写的regular expression:

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

如果您应该遵循 cmets 中关于大于和小于比较的说明,并且您想检查输入是否为长度为 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 &gt;= "a" &amp;&amp; ch &lt;= "z" || ch &gt;= "A" &amp;&amp; ch &lt;= "Z" 的计算结果为 truefalse,因此您可以直接 return 直接使用该值。

您尝试使用if (ch &gt;= "A" &amp;&amp; ch &lt;= "z") 的方法不起作用,因为大写“A”和小写“z”之间的字符范围不仅包括字母,还包括“Z”和“a”之间的一些其他字符”。

【讨论】:

我们还没有了解正则表达式。所以我不确定我是否应该使用它们。当然,除非没有其他东西可以使用。也许我只是错过了那节课。但我已经想通了。 var input = prompt("输入一个字符") var isAlpha = function(ch) if (ch >= "A" && ch 它只允许多个字符,所以我试图解决这个问题。 @johntc121 - 您不需要 正则表达式来执行此操作,这只是最简单的方法。因此,对于您的任务,您可能应该坚持比较。请注意我在回答中所说的为什么 (ch &gt;= "A" &amp;&amp; ch &lt;= "z") 不起作用。例如,字符 "[" 大于大写 Z 但小于小写 a。 那么我是否必须将其更改为类似 (ch >= "A" && ch = "a" && ch 【参考方案2】:

首先确保它是一个字符串,然后使用正则表达式。

var isAlpha = function(ch)
  return typeof ch === "string" && ch.length === 1 && /[A-Za-z]/.test(ch);

【讨论】:

如果您在正则表达式中包含 ^$,则不需要单独的类型和长度检查(至少,我不知道任何可能的非字符串值强制转换为单个字符,即字母)。 为什么无效数据返回false?为什么不抛出TypeError @Sapphire_Brick 在 SO 上的简短 sn-ps 很少包含任何适当的错误处理,而是专注于显示解决问题的路径的开始。答案的任务是帮助解决问题,而不是提供完整的生产级代码。除此之外,这个问题(我不得不再次阅读,这已经超过三年了......)要求“如果它是一封信,则返回真,如果不是,则返回假”。从这个意义上说,“无效数据”是“不是字母”。从问题提供的代码中,还建议调用像isAlpha(digit) 这样的调用,其中digit 不是字符串。【参考方案3】:

如果你只需要一个字符:

var isAlpha = function(ch)
  return /^[A-Za-z]1,1$/.test(ch)

注意这里的1,1 表示角色至少出现一次,最多出现一次。如果你只测试一个字符,你可以把这个1,1去掉,如果你想测试多个字符,你可以根据你的要求更新成n,m

【讨论】:

1,1 是多余的。【参考方案4】:

regex 是你的朋友。

var isAlpha = function(ch)

     return ch.match(/[0-9]/) != null


【讨论】:

您应该改用RegExp.prototype.testString.prototype.match 在这里效率较低,因为解释器必须生成匹配对象。此外,您的正则表达式只匹配数字。

以上是关于如果一个字母返回true的Javascript函数?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 Javascript 中的连续函数返回布尔值?

常见的字符测试函数

JavaScript迭代方法,归并方法

函数式编程javascript

JavaScript:如果字符串在第一个字母中包含元音,则遍历字符串并返回字符串+'ay'

在这个 javascript 字谜问题中,我一直在变得虚假而不是真实