我有一个网址说 dummy URL
http://www.google.com/?v=as12&&src=test&img=test
现在我要删除& src = test&我知道我们可以使用indexof,但不知怎的,我无法得到下一个&符号(&)并单独删除该部分的想法。 任何帮助。新网址应该是
答案 0 :(得分:3)
使用它怎么样?:
var mystring = "http://www.google.com/?v=as12&&src=test&img=test";
mystring = mystring.replace(/&src=.+&/, ""); // Didn't realize it isn't necessary to escape "&"
alert(mystring);
这假定“any”字符将出现在“=”之后和下一个“&”之前,但如果您知道它可能是什么,您可以随时将.
更改为字符集 - 使用[ ]
这也假定在“=”之后但在“&”之前至少有1个字符。 - 因为+
。但是如果您认为字符串可以是“src =& img = test”
*
<强>更新强>:
使用split
可能是此问题的正确选择,但前提是src=whatever
的位置仍在“&amp;&amp;”之后但未知......例如,如果它是“&amp;&amp; img = test&amp; src = test”。所以只要“&amp;&amp;”总是将静态部分与您想要更新的部分分开,您可以使用以下内容:
var mystring1 = "http://www.google.com/?v=as12&&src=test&img=test";
var mystring2 = "http://www.google.com/?v=as12&&img=test&src=test";
var final1 = removeSrcPair(mystring1);
alert(final1);
var final2 = removeSrcPair(mystring2);
alert(final2);
function replaceSrc(str) {
return str.replace(/src=.*/g, "");
}
function removeSrcPair(orig) {
var the_split = orig.split("&&");
var split_second = the_split[1].split("&");
for (var i = split_second.length-1; i >= 0; i--) {
split_second[i] = replaceSrc(split_second[i]);
if (split_second[i] === "") {
split_second.splice(i, 1);
}
}
var joined = split_second.join("&");
return the_split[0] + "&" + joined;
}
这仍然假设一些事情 - 主要分为“&amp;&amp;”......键是“src”,然后是“=”,然后是0或更多字符......当然,关键/值对由“&amp;”分隔。如果您的问题不是那么广泛,那么我的第一个答案似乎很好。如果在“&amp;&amp;”之后“src = test”并不总是首先出现,那么您需要使用更“复杂”的正则表达式或此split
方法。
答案 1 :(得分:1)
类似的东西:
url = "http://www.google.com/?v=as12&&src=test&img=test"
firstPart = url.split('&&')[0];
lastPart = url.split('&&')[1];
lastPart = lastPart.split('&')[1];
newUrl = firstPart+'&'+lastPart;
document.write(newUrl);
答案 2 :(得分:1)
详情:使用拆分方法。
解决方案编辑:我更改了以下内容以测试最后一个查询字符串是否存在
var url = "http://www.google.com/?v=as12&&src=test&img=test";
var newUrl;
var splitString = url.split('&');
if (splitString.length > 3)
{
newURL = splitString[0] + "&" + splitString[3];
}
else
{
newURL = splitString[0];
}