我有一堆字符串可以匹配Bonfire:FreeCodeCamp中的Palindrome 字符串是:
我的代码:
function palindrome(str) {
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
var num = newstr.length;
for(var i=0;i<=Math.floor(num/2);i++)
{
if(newstr[i]!==newstr[num-i])
{
return newstr;
}
}
return true;
}
if语句可能有什么问题?字符串的返回是正常的..只是不能围绕这些正则表达式?
我目前的正则表达式:
var newstr = str.replace(/[^\w_-]/g,"").toLowerCase();
匹配几乎所有字符串,但最后一个。我哪里错了?
答案 0 :(得分:1)
最后一个不是回文;你的开头是0_0,最后是0-0,不要删除那些字符。
作为一个迂腐的说明,严格来说,这不是一种常规语言。
答案 1 :(得分:1)
数组或字符串中的索引从0
运行到length-1
。但是当您访问字符串末尾的元素时,您将从num
开始,而不是num-1
。从末尾减去时,需要减去额外的1
。所以它应该是:
if (newstr[i] != newstr[num-i-1]) {
return newstr;
}
答案 2 :(得分:1)
因此虽然答案很有用,但它们并没有提供正确的正则表达式。射向@Barmar指向正确的方向。这是我的正则表达式。
def index(request):
products = Product.objects.all()
context = {'products': products}
return render(request, 'index.html', context)
FCC中Palindrome的完整代码:
var newstr = str.replace(/[\W_]/g,'').toLowerCase();