javascript - 替换特定开始结束位置的字符串 javascript

标签 javascript string ecmascript-6 substring

我想替换特定开始和结束索引处的字符串,

str = `kunal 11 12 13 kunal 11 12`;

matches = [{
    Start: 0,
    End: 10
  },
  {
    Start: 15,
    End: 26
  }
];

str1 = '';
for (i = 0; i < matches.length; i++) {
  str1 = str.slice(0, matches[i].Start) +
         `<span>${str.substring(matches[i].Start, matches[i].End)}</span>` +
          str.slice(matches[i].End);
}

console.log(str1);

我编写了一段代码,仅替换最后一个匹配项,是否缺少一些预定义的方法?

最佳答案

问题是 str1 = str.slice...<other manipulations of str>意味着结果 str1仅取决于什么str是,而不是什么 str1以前可能是这样。因此,如果您重新分配 str1在第一次迭代中,然后在第二次迭代中重新分配它,第二个版本将不包含第一个版本中所做的任何更改。

要修复它,您可以迭代 matches 来自最大的Start最小Start ,而不是相反,而.slice ing modified 字符串,这将确保新插入的文本不会破坏您的 matches 'StartEnd属性:

const input = `kunal 11 12 13 kunal 11 12`;
const matches = [{
    Start: 0,
    End: 10
  },
  {
    Start: 15,
    End: 26
  }
];
let str = input;
for (let i = matches.length - 1; i >= 0; i--) {
  str = str.slice(0, matches[i].Start) + `<span>${str.substring(matches[i].Start, matches[i].End)}</span>` + str.slice(matches[i].End);
}

console.log(str);

关于javascript - 替换特定开始结束位置的字符串 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53035269/

相关文章:

python - 如何使用 python itertools.groupby() 按第一个字符对字符串列表进行分组?

javascript - ES6 和多次导出的导入问题

javascript - 对象时间(2014,2,17 11 :02:08, 2014-03-17 11,02,08)没有方法'getTimezoneOffset

javascript - 点击提交链接后尝试关闭弹出窗口

c++ - 尝试将用户输入传递给字符串 (C++)

php - 检查字符串以查看特定分组是否存在(PHP)?

javascript - 输入类型文件 - 如何访问文件属性?

javascript - 语义用户界面 react : How to set content load on pagination

javascript - 如何正确配置实验性 ECMAScript 模块以便在 Node.js 中使用导入/导出

JavaScript 展开运算符和条件运算符,为什么它不适用于数组?