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 に答える