让我从我们已经知道的开始。JS在中查找${ .}并在其中执行表达式,然后将返回的任何内容作为字符串放置。好的,这是内置功能:
const name = "Dick Smith";
const str = `Hello, ${name}`;
console.log(str); // Hello, Dick Smith现在,在这个例子中,我将使用"“,假设我想找到每个()并做同样的事情,我如何实现它?那个magicFunction()应该是什么样的呢?EXP:
const name "Dick Smith";
const str = magicFunction("Hello, (name)");
console.log(str); // Hello, Dick Smith详细信息:
该魔术函数获得一个字符串作为参数,并返回另一个字符串。
function magicFunction(str){
// Does some magic
return str;
}Help
如果需要,可以使用eval()执行表达式。
注意:()中的可以是所有东西,甚至是像() => {}或() => ("Hello")甚至(function foo(){...})()这样的函数表达式。总之,它可以是JS引擎能够理解和执行的所有东西。
发布于 2021-03-11 06:04:25
这是一个基本概念,只涵盖问题中提到的情况。您需要通过改进正则表达式将其扩展到您的确切需求。
const magicFunction = (input) => {
const regex = /(?:\([^\(\)]*\))/g;
const matches = input.match(regex);
matches.map(match => {
console.log(`Match: ${match}`);
console.log(`Expression: ${eval(match)}`);
input = input.replace(match, eval(match));
});
document.write(input);
}
const name = "Dheemanth Bhat";
const skill = () => "JavaScript";
const age = 27;
const rep = 1749 + 25;
const str = magicFunction("name: (name), age: (age) skill: (skill) rep: (rep).");
注意事项:对正则表达式的解释可以找到这里。
https://stackoverflow.com/questions/66491466
复制相似问题