我想找到一個更簡單的方法來更改當前網址上的2個變量,而不必拆分網址並重新構建它。簡單的方法來改變當前的網址
例如,如果我有一個網址http://www.anysite.com/any/12/this/url/10/20
,並希望到最後變成變量10
和20
到20
和30
的例子有比使用window.location.href.split("/")
則不必重新構建整個URL更簡單的方法?
我想找到一個更簡單的方法來更改當前網址上的2個變量,而不必拆分網址並重新構建它。簡單的方法來改變當前的網址
例如,如果我有一個網址http://www.anysite.com/any/12/this/url/10/20
,並希望到最後變成變量10
和20
到20
和30
的例子有比使用window.location.href.split("/")
則不必重新構建整個URL更簡單的方法?
你可以抓住它是一個字符串,然後修剪和追加,如你所見。
你可以抓住它作爲一個字符串,並使用搜索和替換。
你可以抓住它作爲一個字符串,並運行GREP反對它。
但是,老實說,可能是最簡單的做分割/數組的事情。
這一切都取決於您必須遵守的格式化規則。
使用正則表達式是避免發生溢出的最佳方法,如果這就是你想要的。
(例如)參見:
至於更換URL,這將是location.replace(/* new URL here*/)
事項,實際上替換URL中受益瀏覽器歷史。
您可以使用正則表達式:
var url = "http://www.anysite.com/any/12/this/url/10/20";
var newURL = url.replace(/10\/20$/, "20/30");
此正則表達式查找「10/20」的URL的結束,以及「20/30」替換它。根據你想要做替換的具體情況,你可以稍微調整一下正則表達式來允許或禁止某些情況。
隨着正則表達式函數替換:
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;
});
這取代了具有格式的字符串的一部分:[編號]/[數],並且是在字符串「URL」的端部(因爲在模式結尾處有一個$),其格式爲:[數字+10]/[數字+10]。
好的,這是一個你可以使用的功能。
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;
}
小提琴here
重建將是唯一的辦法,雖然也有替代品'分裂()'。 –
我想你可以使用正則表達式匹配函數來完成你想要的任務嗎?不確定 –