3

我有以下链接:

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

以及以下数据:

catalogueId: 31
translationId: 4

现在我想用数据对象的值更改大括号之间的部分。所以链接需要看起来像这样:

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

Javascript中有没有办法来完成这个?如果是,那是什么方法?

4

2 回答 2

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] ];
});
于 2016-11-15T15:53:06.570 回答
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>

于 2016-11-15T15:54:25.753 回答