URLを分割して再構築することなく、現在のURLの2つの変数を変更する簡単な方法を見つけようとしています。
たとえば、私がURLを持っていて、最後を変数に変更http://www.anysite.com/any/12/this/url/10/20
したい場合、たとえば、 URL全体を再構築する よりも簡単な方法はありますか?10
20
20
30
window.location.href.split("/")
URLを分割して再構築することなく、現在のURLの2つの変数を変更する簡単な方法を見つけようとしています。
たとえば、私がURLを持っていて、最後を変数に変更http://www.anysite.com/any/12/this/url/10/20
したい場合、たとえば、 URL全体を再構築する よりも簡単な方法はありますか?10
20
20
30
window.location.href.split("/")
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].
正規表現を使用することは、スピルを避けるための最良の方法です (それが必要な場合)。
(例)を参照してください:
URL の置き換えに関してはlocation.replace(/* new URL here*/)
、ブラウザの履歴で実際に URL を置き換えるという利点があります。
わかりました、ここで使用できる機能があります。
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;
}
ここでフィドル
それを文字列として取得し、必要に応じてトリミングして追加できます。
文字列として取得し、検索と置換を使用できます。
それを文字列として取得し、それに対して GREP を実行できます。
しかし、正直なところ、分割/配列を行うのが最も簡単かもしれません。
それはすべて、従わなければならないフォーマット規則に依存します。
正規表現を使用できます:
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」に置き換えます。置換を行う正確な状況に応じて、正規表現を少し調整して、特定の状況を許可または禁止することができます。