0

我有一个 URL 说 虚拟 URL

http://www.google.com/?v=as12&&src=test&img=test

现在我想单独删除 &src=test& 部分。我知道我们可以使用 indexof 但不知何故,我无法获得获取下一个 & 符号并单独删除该部分的想法。任何帮助。新的 URL 应该看起来像

http://www.google.com/?v=as12&img=test

4

3 回答 3

3

用这个怎么样?:

http://jsfiddle.net/RMaNd/8/

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);

这假定“任何”字符将出现在“=”之后和下一个“&”之前,但是.如果您知道它可能是什么,您始终可以将其更改为字符集 - 使用[ ]

这也假设在“=”之后但在“&”之前至少有 1 个字符 - 因为+. 但是*如果您认为字符串可能是“src=&img=test” ,则可以将其更改为

更新

对于这个问题,使用split可能是正确的选择,但前提是位置src=whatever仍然在“&&”之后但未知……例如,如果它是“&&img=test&src=test”。因此,只要始终存在“&&”将静态部分与您要更新的部分分开,您就可以使用如下内容:

http://jsfiddle.net/Y7LdG/

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;
}

这仍然假设一些事情 - 主要拆分是“&&”......键是“src”,然后是“=”,然后是0个或更多字符......当然,键/值对由“&”。如果您的问题不是那么广泛,那么我的第一个答案似乎很好。如果“src=test”并不总是在“&&”之后出现,则需要使用更“复杂”的正则表达式或这种split方法。

于 2012-10-30T05:04:17.973 回答
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);
于 2012-10-30T05:05:47.467 回答
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];
}
于 2012-10-30T05:06:19.053 回答