Javascript替换一个或另一个

时间:2014-01-16 17:12:03

标签: javascript replace

我正在努力使replace功能在进行一场或另一场比赛时有效。它作为一个逻辑非常简单,所以我希望有一个非常简单的实现。

我试过了:

var my_url = document.URL;
var tmpl = "?tmpl=component" || "&tmpl=component"; //This is the tricky part
location.href = my_url.replace(tmpl,"");

......但它似乎不起作用。有什么想法吗?

4 个答案:

答案 0 :(得分:3)

这不是JavaScript的工作原理,logical OR在这里没用。一种可能的方法是使用regex

location.href = my_url.replace(/[?&]tmpl=component/, "");

此处,replace方法将替换tmpl=component?&开头的任何匹配。

答案 1 :(得分:1)

你可以做两次替换:

location.href = my_url.replace("?tmpl=component", "").replace("&tmpl=component", "");

或者您可以使用正则表达式:(推荐)

location.href = my_url.replace(/[?&]tmpl=component/, "");

[?&]会匹配'?'或'&'字符。

答案 2 :(得分:1)

您将tmpl设置为表达式"?tmpl=component" || "&tmpl=component";的值,该值始终会计算为"?tmpl=component",因为它是您或语句中的第一个真值。

您可以通过多种方式使用正则表达式执行此操作:

my_url.replace(/?tmpl=component|&tmpl=component/, "");
my_url.replace(/[?&]tmpl=component/, "");

答案 3 :(得分:1)

最好的一个是:

 var tmpl = (my_url.indexOf("?tmpl=component") > -1)? "?tmpl=component" : "&tmpl=component";