我需要编写一个带有参数str
的函数的代码,该函数评估该单词是否是回文,它应该返回true
,否则应该返回返回假
。
注意:我需要删除所有非字母数字字符。
我编写了下面的代码,但它给出的结果与预期相反:
- 所有情况都给出错误。
- 无法删除下划线。
- 当在我得到的图像下方使用
console.log
时。
代码:
function palindrome(str) {
var exc = /[^\w_]/gi;
var repStr = str.toLowerCase().replace(exc, "");
console.log("Replaced string id: " + repStr);
len = repStr.length -1
for (var i = 0; i <= len; i++) {
if (str[i] !== repStr[len] - i) {
return false;
}
}
return true;
}
console.log(palindrome("eye"));
console.log(palindrome("_eye"));
console.log(palindrome("race car"));
console.log(palindrome("not a palindrome"));
console.log(palindrome("A man, a plan, a canal. Panama"));
console.log(palindrome("never odd or even"));
console.log(palindrome("nope"));
console.log(palindrome("almostomla"));
console.log(palindrome("My age is 0, 0 si ega ym"));
console.log(palindrome("1 eye for of 1 eye."));
console.log(palindrome("0_0 (: /-\ :) 0-0"));
console.log(palindrome("five|\_/|four"));
最佳答案
您的代码中有 2 个错误。 1) RegExp 不会替换下划线,因为 [^\w_]
读作“不是单词字符或下划线的所有内容”。尝试一下
/[\W_]/g
其读作“以下之一:任何非单词字符、下划线的字符”
或者
/[^0-9a-z]/g
其读作“任何不是:数字(从 0 到 9)、英文字母”的内容。
2)要使其工作,您需要编写
if(repStr[i] !== repStr[len - i])
而不是
if(str[i] !== repStr[len] - i)
关于javascript - JavaScript 的回文问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48368412/