javascript - Javascript String#replaceAll 仅适用于一个实例
问题描述
我有一段文本,方括号中有一些字符串,如 [value] 我正在尝试运行一个函数,让用户为每个 [...] 输入一个值。我大部分时间都在工作,但是当我 console.log 更改的正文时,只有一些值发生了变化。其中一些具有 html 标签,[<strong>Hello</strong>]
并且它们没有被更改。我只是不确定如何克服它。
let data = $('#elm1').val();
console.log(data);
let newData;
function getWords() {
let words = data.match(/[^[\]]+(?=])/g);
console.log(words);
words.forEach(function(word) {
console.log(word);
let input = prompt("Enter value to replace: "+word);
newData = data.replaceAll("["+word+"]", input);
});
console.log(newData);
}
解决方案
问题是每次forEach
运行时它只是更新一个单词并显示带有更新的最后一个单词的正文。
我通过添加data = newData
当循环的迭代碰巧在移动到下一个之前保存以前的更改来解决这个问题。
let data = $('#elm1').val();
console.log(data);
let newData;
function getWords() {
let words = data.match(/[^[\]]+(?=])/g);
console.log(words);
words.forEach(function(word) {
console.log(word);
let input = prompt("Enter value to replace: "+word);
newData = data.replaceAll("["+word+"]", input);
data = newData; //Added this
});
console.log(newData);
}
推荐阅读
- json - 如何在画布上呈现 json 数据?
- android - Android协程处理异常
- uwp - UWP TreeView如何允许删除特定项目
- r - 固定利率衰减的累积存款
- apache-spark - 使用 delta 格式使用 Apache Spark 创建表被卡住了
- c++ - Clion 无法解析模板
- unit-testing - 如何在 Hyperledger Composer 中通过单元测试引用一系列产品
- java - Spring中声明性事务中的传播(选择正确)问题
- node.js - 如何使用节点 js 更新 redis 缓存
- scroll - 如何从 div 元素中分离水平滚动条并将其放入另一个水平位置 - react-table 案例?