首页 > 解决方案 > 如何检查数组中的项目是否为字母?

问题描述

所以有这个关于 coderbyte 的练习:

让函数 SimpleSymbols(str) 接受传递的 str 参数,并通过返回字符串 true 或 false 来确定它是否是可接受的序列。str 参数将由 + 和 = 符号组成,它们之间有几个字符(即 ++d+===+c++==a),并且要使字符串为真,每个字母都必须用 + 符号包围。所以左边的字符串是假的。该字符串不会为空,并且至少包含一个字母。

示例测试用例:

输入:“+d+=3=+s+”

输出:真

输入:“f++d+”

输出:假

这是我想出的解决方案,但它不起作用:

function SimpleSymbols(str) { 

  // code goes here 

  var splitted = str.split('')
  var result = splitted.map(function (arr){
      for (var i=0; i<splitted.length; i++){
          if (splitted[i] == '+' && splitted[i+2] == '+' && splitted[i+1] == /[a-z]/gi || && splitted[i+1] == /[A-Z]/gi){
              return true
          }
          return false
      }
      }
  })

 return result;

}

// keep this function call here 
SimpleSymbols(readline());

我相信问题在于我如何在 if 语句上编写正则表达式条件。

那么如何找出 splitted[i+1] 是一个字母的正确方法呢?

标签: javascript

解决方案


像这样的东西

function SimpleSymbols(str) { 

  // code goes here 

  var splitted = str.split('+')
  var result = splitted.map(function (arr){
      for (var i=0; i < splitted.length; i++){
           if ( /[a-z]/gi.test(splitted[i]) &&  /[A-Z]/gi.test(splitted[i+1])
           ){
              return true
          }
          return false
      
      }
  })

 return result;

}

// keep this function call here 
console.log(SimpleSymbols('f+g+j'));


推荐阅读