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."
adiga
35.4k9 gold badges66 silver badges88 bronze badges
asked Dec 8, 2020 at 11:15
Abdelrhman Mohamed
1911 silver badge11 bronze badges
2 Answers 2
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);
answered Dec 8, 2020 at 11:18
Peter B
24.7k5 gold badges42 silver badges94 bronze badges
Sign up to request clarification or add additional context in comments.
2 Comments
Keith
Note: put Lorem again in your myStr.. It won't replace.
Abdelrhman Mohamed
@Keith yes I want to replace it for the first time only>
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)
answered Dec 8, 2020 at 11:26
Aadil Mehraj
2,6141 gold badge9 silver badges17 bronze badges
Comments
lang-js