我想用特定的id替换URL字符串中的“:id”,例如54我的问题是使用“/(:id)/i”替换此参数是否足够,或者我应该使用更复杂的东西?谢谢
var url = "http://www.test.com/api/person/:id/details"
var str = url.replace(/(:id)/i, 54);
字符串
更新日期:
我刚刚意识到,这将是伟大的,有一个功能,将能够取代多个值的URL.示例:
function replaceParametersInUrl(url, params) {
var regex = new RegExp(Object.keys(params).join('|'), 'gi');
return url.replace(regex, function(matched) {
return params[matched];
});
}
console.log(replaceParametersInUrl("api/person/:userId/items/:itemId", {userId: 56, itemId: 1}));
型
这个解决方案的问题是,它只替换了userId和itemId字符串,而没有“:“。我如何才能实现它将替换包括“:“在内的那些字符串?
4条答案
按热度按时间uinbv5nw1#
我写这个函数是为了解决我在更新的问题中提到的问题:
字符串
我可以在对象键中使用“:“字符吗?
jobtbby32#
在“正常”的情况下,它应该足够了。用户可以输入
:id
或:Id
,但你已经使用了incasesensitive标志,所以它应该没问题。但是你是那个应该知道它是否足够的人。也许在你的应用程序中有一个情况,在你想要替换的那个之前有一个
:id
。然后你就有了上面给出的RegExp的问题。t5fffqht3#
您提供的代码将正常工作。此外,添加到您的代码中,括号不尼德在这里
(:id)
。此外,如果URL中的任何地方都有:id
,您的正则表达式将失败(虽然不是预期的,但开发人员应该小心)。修改代码:
字符串
inb24sb24#
我想到的另一个解决办法。
字符串