2016-11-15 50 views
3

我有以下鏈接:在鏈接替換字符串的一部分的Javascript

/v1/catalogue/folders/{catalogueId:[0-9]+}/translations/{translationId:[0-9]+}/

和以下數據:

catalogueId: 31 
translationId: 4 

現在我想改變捲曲的部分括號中的數據對象的值。所以鏈接需要看起來像這樣:

/v1/catalogue/folders/31/translations/4/

是否有在Javascript辦法accoomplish呢?如果是,那是什麼方式?

+0

當你作出了嘗試,什麼地方出了錯?我建議看看['String.prototype.replace()'](https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/String/replace),作爲提示。但是,首先,您的瀏覽器地址欄中的鏈接(您鏈接表示的頁面上),還是您的文檔中其他位置的字符串? –

回答

1

見下面的例子

var data = { 
 
    catalogueId: 31, 
 
    translationId: 4, 
 
}; 
 

 
var url = $('#mylink').attr('href'); 
 
for(var key in data) { 
 
    var regex = new RegExp('{' + key + '[^}]*}', 'g'); 
 
    console.log(regex); 
 
    url = url.replace(regex, data[key]); 
 
} 
 
console.log(url); 
 
$('#mylink').attr('href', url);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<a id="mylink" href="/v1/catalogue/folders/{catalogueId:[0-9]+}/translations/{translationId:[0-9]+}/">link</a>

+0

謝謝!這個最適合我! –

2

這是其中的一個選項:

const regex = /\{(.*?)\}/g 
const url = "/v1/catalogue/folders/{catalogueId:[0-9]+}/translations/{translationId:[0-9]+}/" 
const replacements = { catalogueId: 19, translationId: 20 } 

const result = url.replace(regex, function(_, segment) { 
    return replacements[ segment.split(':')[0] ]; 
}); 
+0

乾淨簡潔。編輯刪除一些參數噪音(抱歉,如果它困擾) – slezica

+1

@slezica感謝您的編輯。我正在編輯它:) – undefined