我有這個var
存儲一個字符串,表示一個充滿參數的URL。我使用的是AngularJS,我不確定是否有任何有用的模塊(或者用普通的JavaScript)可以在不使用正則表達式的情況下刪除不需要的URL參數?如何從URL字符串中刪除一些參數?
比如我需要刪除&month=05
也&year=2017
來自:
var url = "at merge ?derivate=21&gear_type__in=13&engine=73&month=05&year=2017"
我有這個var
存儲一個字符串,表示一個充滿參數的URL。我使用的是AngularJS,我不確定是否有任何有用的模塊(或者用普通的JavaScript)可以在不使用正則表達式的情況下刪除不需要的URL參數?如何從URL字符串中刪除一些參數?
比如我需要刪除&month=05
也&year=2017
來自:
var url = "at merge ?derivate=21&gear_type__in=13&engine=73&month=05&year=2017"
您可以使用此function稱取2個參數:param
你正試圖刪除和你source URL
:
function removeParam(key, sourceURL) {
var rtn = sourceURL.split("?")[0],
param,
params_arr = [],
queryString = (sourceURL.indexOf("?") !== -1) ? sourceURL.split("?")[1] : "";
if (queryString !== "") {
params_arr = queryString.split("&");
for (var i = params_arr.length - 1; i >= 0; i -= 1) {
param = params_arr[i].split("=")[0];
if (param === key) {
params_arr.splice(i, 1);
}
}
rtn = rtn + "?" + params_arr.join("&");
}
return rtn;
}
var url = "at merge ?derivate=21&gear_type__in=13&engine=73&month=05&year=2017";
var url2 = removeParam("month", url);
var url3 = removeParam("year", url2);
console.log(url3);
使用字符串替換:
var url = "at merge ?derivate=21&gear_type__in=13&engine=73&month=05&year=2017";
var modifiedUrl = url.replace('&month=05','').replace('&year=2017','');
console.log(modifiedUrl);
當然您也可以使用RegExr:((&)年=([^ &])) |((&)month = ([^ &]))
使用:
url = url.replace(/(year=([^&]*))|(month=([^&]*))/g, '');
更多的正則表達式:)...
function removeParam(name, url){
return url.replace('/((&)*' + name + '=([^&]*))/g','');
}
var url = "?derivate=21&gear_type__in=13&engine=73&month=05&year=2017"
function removeParam(name, _url){
var reg = new RegExp("((&)*" + name + "=([^&]*))","g");
return _url.replace(reg,'');
}
url = removeParam('year', url);
url = removeParam('month', url);
document.getElementById('url-replace').innerHTML = url;
<div id="url-replace"></div>
var url = "at merge ?derivate=21&gear_type__in=13&engine=73&month=05&year=2017"
var urlParts = url.split('?');
var params = new URLSearchParams(urlParts[1]);
params.delete('month');
params.delete('year')
var newUrl = urlParts[0] + '?' + params.toString()
console.log(newUrl);
使用該API的優勢在於,它與和創建具有正確percent encoding.
串欲瞭解更多信息,請參閱MDN Developer Reference - URLSearchParams API.
純js應該沒問題。你有什麼嘗試? –
@ Gonzalo.-你的意思是使用字符串對象的方法? – commonSenseCode
你可以使用String.prototype.replace作爲instace –