2016-11-15 6 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

Смежные вопросы