2017-01-03 4 views
0

Я пытаюсь заменить второй экземпляр только символа '&' или заменить все экземпляры '&' после первого '&' в URL-адресе www.website.com/--Inventory & vt = test% 20 &% 20unitКак заменить второй экземпляр символа в URL?

до сих пор я использую:

var url = window.location.toString(); 
window.location = url.replace(/&/, '%26'); 
window.location.reload(false); 

но заменяет все '&' символов. любые идеи приветствуются. благодаря!

+0

вы хотите сохраните первый и замените только второй и пусть что-нибудь там останется таким же, как «&», как первый экземпляр, или вы хотите, чтобы первый экземпляр оставался n '&' и все остальное '% 26' – TrojanMorse

+0

@ToreanJoel да, я думаю, что первый экземпляр останется «&», а все остальное «% 26» больше того, что я просил – wallrouse

+0

Предоставленный url не выглядит действительным я всегда думал, что это должно быть? перед любым из них: www.website.com/--Inventory?vt=tes&vt=unit или www.website.com/--Inventory?vt=tes%26unit –

ответ

1

Вы можете выбрать позицию 2-го & характера в свой адрес, передавая (индекс первого символа &) + 1 в качестве 2-го параметра функции IndexOf.

2-й аргумент функции indexOf определяет индекс строки, из которой следует искать символ.

узнать больше here

(В этом случае поиск начинается с 1 + индекс первого & характера)

var position = url.indexOf("&", url.indexOf("&") + 1); 

Теперь вы можете заменить символ в position следующим образом:

url=url.substr(0, position) + '%26' + url.substr(position + 1); 

var url = "www.website.com/--Inventory&vt=test%20&%20unit"; 
 

 
var position = url.indexOf("&", url.indexOf("&") + 1); 
 

 
url=url.substr(0, position) + '%26' + url.substr(position + 1); 
 

 
console.log(url)

0

Грязные, но работает ...

var url = window.location.toString(); 
var explode = url.split("&"); 
url = ""; 
for(int i=0; i<explode.length; i++) { 
    url+=exlode[i]; 
    if(i!=explode.length-1) { 
     if(i==1){ 
      url+="%26"; 
     } else { 
      url+="&"; 
     } 
    } 
} 
+2

Это то, что мой босс время от времени говорит обо мне –

0

String.prototype.replaceAt=function(index, character) { 
 
    return this.substr(0, index) + character + this.substr(index+1, this.length); 
 
} 
 

 
var url="www.website.com/--Inventory&vt=test%20&%20unit"; 
 
url=url.split("").reverse().join(""); 
 
var index=url.indexOf("&"); 
 
url=url.replaceAt(index,"62%"); 
 
url=url.split("").reverse().join(""); 
 
console.log(url);

и результата:

www.website.com/--Inventory & Vt = тест% 20% 26% 20unit