热创建动态字符串模板的最佳方法是什么

时间:2019-07-22 17:56:11

标签: javascript regex string join

我想在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数组操作的情况下完成此操作吗?通过正则表达式?如果可以,怎么办?

4 个答案:

答案 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