2015-06-27 47 views
2

此任务的要求是代码对输入字符串返回“true”或“false”。该字符串可以是简单的单词或短语。另一个问题没有解决这些需求。请重新打开并在这里回答。我正在研究函数来检查给定的字符串是否是回文。我的代码似乎适用于简单的单词回文,但不适用于具有大写或空格的回文。检查字符串是否是JavaScript中的回文

function palindrome(str) 
{ 
    var palin = str.split("").reverse().join(""); 

    if (palin === str){ 
     return true; 
    } else { 
     return false; 
    } 
} 

palindrome("eye");//Succeeds 
palindrome("Race car");//Fails 
+0

这个问题是问如何产生回文,没有检查两个字符串是否给予上述标准回文。如果我们可以重新打开它,我会将其作为回答发布:函数isPalindrome(str){str \ str.replace(/ \ s/g,'').toLowerCase(); \t return str === str.split('')。reverse()。join(''); }' –

+0

@ AlexanderO'Mara你在这里正确的轨道上。我需要帮助了解如何在JavaScript中使用regexpressions,并在这里使用它们来删除空格和任何标点符号以及任何大写字母。我希望他们能重开这个问题,因为另一个问题是完全不同的。 –

+0

@ jfriend00你能重新打开这个吗?不是重复的 –

回答

3

喜欢的东西if (word === word.split('').reverse().join('')) {/*its a palindrome!*/}我想说

isPalindrome字符串extention:

String.prototype.isPalindrome = function() { 
 
    var cleaned = this.toLowerCase().match(/[a-z]/gi).reverse(); 
 
    return cleaned.join('') === cleaned.reverse().join(''); 
 
} 
 

 
var result = document.querySelector('#result'); 
 
result.textContent = "'eye'.isPalindrome() => " + 'eye'.isPalindrome() + 
 
        "\n'Something'.isPalindrome() => " + 'Something'.isPalindrome() + 
 
        "\n'Race Car'.isPalindrome() => " + 'Race Car'.isPalindrome() + 
 
        "\n'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() => " + 
 
         'Are we not drawn onward, we few, drawn onward to new era?'.isPalindrome() + 
 
        "\n'Never even or odd'.isPalindrome() => " + 'Never even or odd'.isPalindrome() + 
 
        "\n'Never odd or even'.isPalindrome() => " + 'Never odd or even'.isPalindrome(); 
 
;
<pre id="result"></pre>

6

首先将字符串转换为小写。此外,不是字母的字符将被删除。所以字符串比较成为一个数组,然后将其反转,并将其再次转换为字符串。

Step 1: str1.toLowerCase().replace(...) => "Race car" => "race car" => "racecar" 
Step 2: str2.split("") => ["r","a","c","e","c","a","r"] => .reverse().join() => "racecar" 
Result: str1 === str2 

function palindrome(str) { 
 
    str = str.toLowerCase().replace(/[^a-z]+/g,""); 
 
    return str === str.split("").reverse().join("") 
 
} 
 

 
alert(palindrome("eye")); //true 
 
alert(palindrome("Race car")); //true 
 
alert(palindrome("Madam, I'm Adam")); //true

+0

这将与空白,大小写和标点符号有相同的问题 –

+0

@AustinHansen更新,现在所有的空格被替换,所有的字符现在都是小写字母以避免问题 –

0
function palindrome(str) { 

    var st='';  
    st=str.replace(/[^a-z0-9]/ig,"").toLowerCase();  
    var arr=[];  
    arr=st.split('');  
    arr=arr.reverse();  
    var strr='';  
    strr=arr.join(''); 
    if(strr==st) { 
    return true; 
} 
return false; 
}  
palindrome("A man, a plan, a canal. Panama");//calling the function 
相关问题