我想在Javascript中有一个这样的动态字符串模板:
let stringSentence = 'Hello, my name is --%-- and I am from --%--';
然后..
replaceString(stringSentence , ['John', 'London'];
预期输出:你好,我叫约翰,我来自伦敦
另一个例子:
let stringSentence = 'Hello, my name is --%-- and I am from --%-- and I drink a --%--';
replaceString(stringSentence , ['Jacob', 'New York', 'Juice'];
预期输出:你好,我叫约翰,我来自伦敦,我喝果汁
我的答案是,如何在此字符串模板系统中实现它的最佳方法是什么。
可以在没有for
循环或split/join
数组操作的情况下完成此操作吗?通过正则表达式?如果可以,怎么办?
答案 0 :(得分:2)
您可以使用replace,并将--%--
模式的每个实例替换为数组中的值
let stringSentence = `Hello, my name is --%-- and I am from --%-- and I drink a --%--`
let arr = ['Jacob', 'New York', 'Juice']
function replaceString(str,arr){
let count = 0
return str.replace(/--%--/g,()=> arr[count++] )
}
console.log(replaceString(stringSentence, arr))
答案 1 :(得分:2)
仅是Code Maniacs版本的简明版本。 ++编码疯子。
const stringSentence = `Hello, my name is --%-- and I am from --%-- and I drink a --%--`;
const arr = ['Jacob', 'New York', 'Juice'];
const replaceString = (str,arr) => str.replace(/--%--/g,()=> arr.shift());
console.log(replaceString(stringSentence, arr))
答案 2 :(得分:1)
您可以遍历单词数组,并将mvn clean compile
replace()
与相应的单词一起使用。
--%--
另一种方法是用let stringSentence = 'Hello, my name is --%-- and I am from --%--';
function replaceString(str, arr){
for(let elm of arr){
str = str.replace('--%--', elm);
}
return str;
}
console.log(replaceString(stringSentence , ['John', 'London']))
split()
给定的字符串并将单词插入数组,然后--%--
将其插入
join()
答案 3 :(得分:1)
我实际上会使用模板文字,例如:
SetFilter.model.displayedValues
这样,您可以轻松确定构建字符串所需的值,可以提供默认值(例如,默认名称model: SetFilterModel
),并且可以在多个位置使用一个值,可以格式化输入(例如,将城市大写)等,因此与您建议的格式相比,这种方法更灵活,更易于使用。
如果未对字符串进行硬编码但从其他来源动态检索到该字符串,则确保该字符串不起作用。在这种情况下,我将使用一个帮助程序从一个字符串中构建一个类似于上面的函数:
SetFilter