I got the following script that checks if a phrase is Palindrome or not: <script type="text/javascript" language="JavaScript"> function check(){ var x = isPalindrome(document.palinForm.inputWord.value); document.palinForm.isPalin.value = x; alert(x); return true; } function isPalindrome(x) { var rString = ""; var alen = x.length; for (var i = alen ; i > 0 ; i--){ rString += x.charAt(i-1) }; return (x == rString); } </script> The problem is that it only works if the phrase has no spaces, comas, periods or even caps... for example: A man, a plan, a canal: Panama. would come out false because it's not in this order: amanaplanacanalpanama how can I fix this?
Try this code <script type="text/javascript" language="JavaScript"> function check(){ var x = isPalindrome(document.palinForm.inputWord.value); document.palinForm.isPalin.value = x; alert(x); return true; } function isPalindrome(x) { var rString = ""; var alen = x.length; for (var i = alen ; i > 0 ; i--){ if(alphanumeric(x.charAt(i-1))){ rString += x.charAt(i-1) } }; var nString = ""; for (var i = 0 ; i < alen ; i++){ if(alphanumeric(x.charAt(i))){ nString += x.charAt(i) } }; return (nString.toLowerCase() == rString.toLowerCase()); } function alphanumeric(alphane){ var numaric = alphane; for(var j=0; j<numaric.length; j++){ var alphaa = numaric.charAt(j); var hh = alphaa.charCodeAt(0); if((hh > 47 && hh<58) || (hh > 64 && hh<91) || (hh > 96 && hh<123)){ } else{ return false; } } return true; } </script> Code (markup):
or: function isPalindrome(strX) { strX = strX.replace(/[^a-zA-Z0-9]+/g,"").toLowerCase(); //leave only alphanumeric chararacters, and convert to lower case. return(strX == strX.split("").reverse().join("")); } Code (markup):