var module = 'm1',
taskId = 't1',
hash = 'h1';
var url = `/task/${module}?taskId=${taskId}#${hash}`;
字符串
var module = 'm1',
taskId = 't1',
hash = 'h1';
var url = `/task/${module}?taskId=${taskId}#${hash}`;
document.body.innerHTML = url;
型 使用RegEx:
function replaceUrl(url, data) {
// Create regex using the keys of the replacement object.
var regex = new RegExp(':(' + Object.keys(data).join('|') + ')', 'g');
// Replace the string by the value in object
return url.replace(regex, (m, $1) => data[$1] || m);
}
型
function replaceUrl(url, data) {
var regex = new RegExp(':(' + Object.keys(data).join('|') + ')', 'g');
return url.replace(regex, (m, $1) => data[$1] || m);
}
var updatedUrl = replaceUrl('/task/:module?taskId=:taskId#:hash', {
module: 'm1',
taskId: 't1',
hash: 'h1'
});
console.log(updatedUrl);
document.body.innerHTML = updatedUrl;
function replaceStringVariable(text, data) {
// Create regex using the keys of the replacement object.
const regex = new RegExp('\\${(' + Object.keys(data).join('|') + ')}', 'g')
// Replace the string by the value in object
return text.replace(regex, (m, p1) => data[p1] || m)
}
const newText = replaceStringVariable('hello ${name} and ${nameTwo}', {
name: "Pedro",
nameTwo: "Juan"
})
console.log('newText', newText)
5条答案
按热度按时间pes8fvy91#
一个简单的解决方案是根本不使用RegEx。使用Template literals
字符串
型
使用RegEx:
型
型
goucqfw62#
你可以在ES5中编写一个非常简单的模板函数来实现这一点:
字符串
小提琴:https://jsfiddle.net/j5hp2cfv/
knsnq2tg3#
您可以使用String.prototype.replace的形式,将函数作为参数。
使用您的示例,它可能看起来像:
字符串
此方法将处理您传入的所有参数值,并忽略丢失的参数。
1dkrff034#
我写了一个简单的JavaScript函数stringInject来解决这个问题。它将允许您执行以下操作。找到下面代码的链接。
字符串
NPM / GitHub链接:
https://www.npmjs.com/package/stringinject
https://github.com/tjcafferkey/stringinject的
函数
型
pgx2nnw85#
您可以使用以下函数
字符串