如何使用比较运算符确定字符是否为字母数字?

时间:2017-06-04 11:40:01

标签: javascript

我正在接受freecodecamp挑战"检查Palindromes"。编写一个函数来检查给定的字符串是否是回文。这是我的代码:

    function palindrome(str) {
      str = str.toLowerCase();
      for(var i=0; i<str.length; i++){
        if((str[i] > 'z' || str[i] < 'a') && (str[i] < '0' || str[i] > '9')){
          str = str.replace(str[i], '');
        }
      }
      for(i=0; i<str.length/2; i++){
        if(str[i] != str[str.length-1-i]){
        return false;
        }
      }
      return true;
    }

但它没有正常工作。当我使用replace(/[\W_]/g, '');时:

    function palindrome(str) {
      str = str.toLowerCase().replace(/[\W_]/g, '');
 //   for(var i=0; i<str.length; i++){
 //     if((str[i] > 'z' || str[i] < 'a') && (str[i] < '0' || str[i] > '9')){
 //       str = str.replace(str[i], '');
 //     }
 //   }
      for(i=0; i<str.length/2; i++){
      if(str[i] != str[str.length-1-i]){
          return false;
        }
      }
      return true;
    }

功能正常。我的第一种方法不正确吗?

1 个答案:

答案 0 :(得分:0)

Palindromes忽略大写,空格,标点符号和换行符等。

所以:

一个男人。一个计划。运河:巴拿马!

是一个有效的回文。

因此,在尝试评估之前,您需要从字符串中删除所有标点符号和空格,以便您实际评估的字符串为:

amanaplanacanalpanama

然后你可以很容易地对剩下的角色做任何比较。

我前一段时间做了其中一项并包含了一些测试,可能值得一看:https://github.com/pvencill/palindrome