0

URLを分割して再構築することなく、現在のURLの2つの変数を変更する簡単な方法を見つけようとしています。

たとえば、私がURLを持っていて、最後を変数に変更http://www.anysite.com/any/12/this/url/10/20したい場合、たとえば、 URL全体を再構築する よりも簡単な方法はありますか?10202030window.location.href.split("/")

4

5 に答える 5

2

regexp 関数を使用すると、次のように置き換えられます。

url.replace(/([0-9]*)\/([0-9]*)$/, function( str , n1 , n2 ){
  var new_n1 = 10 + parseInt( n1 , 10 );
  var new_n2 = 10 + parseInt( n2 , 10 );
  return new_n1 + '/' + new_n2;
});

これは、フォーマットが [number]/[number] で、文字列 'url' の末尾にある文字列の一部 (パターンの末尾に $ があるため) を、次の形式の文字列に置き換えます。 : [数値+10]/[数値+10].

于 2012-11-05T23:18:14.317 に答える
1

正規表現を使用することは、スピルを避けるための最良の方法です (それが必要な場合)。

(例)を参照してください:

URL の置き換えに関してはlocation.replace(/* new URL here*/)、ブラウザの履歴で実際に URL を置き換えるという利点があります。

于 2012-11-05T23:11:14.567 に答える
0

わかりました、ここで使用できる機能があります。

function amendHref( a, b) {

    var str = window.location.href;

    var newHref = str.replace( /[\d]+\/[\d]+$/, a + "/" + b );
    //                          ^^^^^          digit one or more times
    //                               ^^        ( escaped ) forward slash
    //                                  ^^^^   digit one or more times
    //                                      ^  end of string

    window.location.href = newHref;
}

ここでフィドル

于 2012-11-05T23:59:11.677 に答える
0

それを文字列として取得し、必要に応じてトリミングして追加できます。

文字列として取得し、検索と置換を使用できます。

それを文字列として取得し、それに対して GREP を実行できます。

しかし、正直なところ、分割/配列を行うのが最も簡単かもしれません。

それはすべて、従わなければならないフォーマット規則に依存します。

于 2012-11-05T23:10:46.140 に答える
0

正規表現を使用できます:

var url = "http://www.anysite.com/any/12/this/url/10/20";
var newURL = url.replace(/10\/20$/, "20/30");

この正規表現は、URL の末尾にある「10/20」を探し、「20/30」に置き換えます。置換を行う正確な状況に応じて、正規表現を少し調整して、特定の状況を許可または禁止することができます。

于 2012-11-05T23:13:08.640 に答える