Abdelrhman Mohamed
Abdelrhman Mohamed

Reputation: 195

replace old array with new array in string

I have a var contains string and I have array with words from the string called oldWords and new array with the new words called newWords I want to replace oldWords with newWords in the string I already try to do it with for loop but it return the string with only the last word replaced.

Code:

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);

output should be:

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

Upvotes: 1

Views: 256

Answers (2)

Aadil Mehraj
Aadil Mehraj

Reputation: 2614

You can replace all the occurrences of old words with new words as follows:

NOTE: This can replace multiple occurrences of words as well.

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)

Upvotes: 2

Peter B
Peter B

Reputation: 24136

Start with let newStr = myStr; before the loop, then do newStr = newStr.replace(...) inside the loop:

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);

Upvotes: 3

Related Questions