【问题标题】:replace old array with new array in string用字符串中的新数组替换旧数组
【发布时间】:2021-03-19 17:07:22
【问题描述】:

我有一个 var 包含字符串,并且我有一个包含字符串中单词的数组,称为 oldWords,新数组包含新单词,称为 newWords 我想用字符串中的 newWords 替换 oldWords 我已经尝试使用 for 循环但它返回仅替换最后一个单词的字符串。

代码:

let myStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sapien magna.",
    old_Words = ["Lorem", "ipsum"],
    new_Words = ["word1", "word2"];
    
for (let i = 0; i < old_Words.length; i++) {
  var newStr = myStr.replace(old_Words[i], new_Words[i]);
}

console.log(newStr);

输出应该是:

"word1 word2 dolor sit amet, consectetur adipiscing elit. Fusce sapien magna."

【问题讨论】:

    标签: javascript arrays replace


    【解决方案1】:

    您可以将所有出现的旧词替换为新词,如下所示:

    注意: 这也可以替换多次出现的单词。

    let myStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem ipsum dolor Fusce sapien magna.",
        old_Words = ["Lorem","ipsum"],
        new_Words = ["word1","word2"];
        
    old_Words.forEach((oldWord, idx) => {
      myStr = myStr.replace(RegExp(oldWord, 'g'), new_Words[idx])
    });
    
    console.log(myStr)
    

    let myStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Lorem Fusce ipsum sapien magna.",
        old_Words = ["Lorem","ipsum"],
        new_Words = ["word1","word2"];
        
    old_Words.forEach((oldWord, idx) => {
      myStr = myStr.replace(RegExp(oldWord, 'g'), new_Words[idx])
    });
    
    console.log(myStr)

    【讨论】:

      【解决方案2】:

      在循环前以let newStr = myStr; 开始,然后在循环内执行newStr = newStr.replace(...):

      let myStr = "Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce sapien magna.",
          old_Words = ["Lorem","ipsum"],
          new_Words = ["word1","word2"],
          newStr = myStr;
      
      for (let i = 0; i < old_Words.length; i++){
        newStr = newStr.replace(old_Words[i], new_Words[i]);
      }
      console.log(newStr);

      【讨论】:

      • 注意:将 Lorem 再次放入您的 myStr.. 它不会替换。
      • @Keith 是的,我只想第一次更换它>
      猜你喜欢
      • 1970-01-01
      • 2013-11-08
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 2010-09-28
      • 2022-10-15
      • 2015-03-06
      • 2019-03-21
      相关资源
      最近更新 更多