JavaScript:检查2个字母是否为字母的后续字母

时间:2019-05-25 05:39:44

标签: javascript regex

如何比较JavaScript中的2个字母以检查它们是否为字母中的后续字母。基本上,两个字母必须在字母表中彼此相邻。

例如,比较:

  • ab将是true
  • ac将是false

对于我的程序,我收到一个输入数组,例如["a","b","e"],我想遍历该数组并将每个项目与其之前的项目进行比较,以下是我的代码:

function fearNotLetter(str) {
  str = str.split("");
  console.log(str);
  for(let i=1; i<str.length; i++){
    console.log(str[i]>str[i-1]);
    if(str[i] > str[i-1]){
      console.log("good order");
    } else {
      console.log("missing");
    }
  }
  return str;
}

到目前为止,我不确定在内部if statement中该怎么做,我只是尝试比较这些项目以检查索引i处的项目是否大于索引i-1处的项目。

2 个答案:

答案 0 :(得分:4)

提取两个字符的charCode,然后检查它们是否相差1,并且在字母范围内:

const checkAlphaAdjacent = (c1, c2) => {
  const [code1, code2] = [c1.charCodeAt(), c2.charCodeAt()];
  return Math.abs(code1 - code2) === 1 && [c1, c2].every(char => /[a-z]/i.test(char));
};
console.log(checkAlphaAdjacent('a', 'b'));
console.log(checkAlphaAdjacent('a', 'c'));
console.log(checkAlphaAdjacent('A', 'C'));
console.log(checkAlphaAdjacent('B', 'C'));

答案 1 :(得分:2)

尝试一下:

const checkSequence = (c1, c2) => {
    const char1 = c1.toLowerCase().charCodeAt();
    const char2 = c2.toLowerCase().charCodeAt();
    return Math.abs(char1 - char2) === 1;
  };
  
  console.log(checkSequence('a','B'));
  console.log(checkSequence('a','b'));
  console.log(checkSequence('B','a'));
  console.log(checkSequence('B','B'));

在此解决方案中,如果a接b答案为真。如果您不希望这样,只需更改此行: 返回Math.abs(char1-char2)=== 1; 至 char2-char1 === 1; 因此['a','b']为true,而['b','a']为false。 在其他方法中,如果您想['b','b']没问题,可以将=== 1更改为<= 1,依此类推。