我有以下链接:
/v1/catalogue/folders/{catalogueId:[0-9]+}/translations/{translationId:[0-9]+}/
以及以下数据:
catalogueId: 31
translationId: 4
现在我想用数据对象的值更改大括号之间的部分。所以链接需要看起来像这样:
/v1/catalogue/folders/31/translations/4/
Javascript中有没有办法来完成这个?如果是,那是什么方法?
我有以下链接:
/v1/catalogue/folders/{catalogueId:[0-9]+}/translations/{translationId:[0-9]+}/
以及以下数据:
catalogueId: 31
translationId: 4
现在我想用数据对象的值更改大括号之间的部分。所以链接需要看起来像这样:
/v1/catalogue/folders/31/translations/4/
Javascript中有没有办法来完成这个?如果是,那是什么方法?
这是选项之一:
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] ];
});
见下面的例子
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>