javascript - 用数组元素替换字符串键
问题描述
我有以下代码:
const chaine = 'lorem {{name}} lorem lorem {{name}}..." ;
我需要用这样的数组元素替换所有 {{name}}
cont list = ['java', 'regex']
所以预期的结果是
lorem java lorem lorem regex...
笔记:
- 字符串中的 {{name}} 数字是可变的
- 数组元素长度是可变的,我们可以有 1..N
谢谢
解决方案
您可以查找替换值并从中获取项目list
。
var string = 'lorem {{name}} lorem lorem {{name}}...',
list = ['java', 'regex'],
result = string.replace(/\{\{name\}\}/g, (i => _ => list[i++])(0));
console.log(result);
通过为索引的每个属性获取一个对象和一个属性,这是一个更高级的版本。
var string = 'lorem {{name}} lorem lorem {{name}}, {{foo}}...',
replacements = { name: ['java', 'regex'], foo: ['bar'] },
result = string.replace(/\{\{([^}]+)\}\}/g, (_, key) => {
if (!(key in replacements)) return key;
replacements['_' + key] = replacements['_' + key] || 0;
return replacements[key][replacements['_' + key]++];
});
console.log(result);
推荐阅读
- sql-server - 如果您只从关系的一侧加入,是否仍然建议使用联结表?
- python - 启动 Python 队列时出现不可预测的行为
- python - 使用狮身人面像数学时的波兰字母
- android - 语言不变
- image-processing - 在 PGraphics 上永久绘制(处理)
- android - 如何用数组数组解析json?
- json - 带地图的 Math.min 在集合中的 0 上返回 NaN
- java - 在 EditText 中编写
- javascript - 在 Angular 8 应用程序中使用外部 JavaScript 库
- ruby-on-rails - 如果对象为 nil,则不应评估代码中的“没有将 nil 隐式转换为字符串”