`string.replace` doesn’t change the variable

JavascriptStringReplace

Javascript Problem Overview


var variableABC = "A B C"; 
variableABC.replace("B", "D") // Wanted output: "A D C".

but variableABC didn’t change:

console.log(variableABC); // "A B C"

I want it to be "A D C".

Javascript Solutions


Solution 1 - Javascript

According to the Javascript standard, String.replace isn't supposed to modify the string itself. It just returns the modified string. You can refer to the Mozilla Developer Network documentation for more info.

You can always just set the string to the modified value:

variableABC = variableABC.replace('B', 'D')

Edit: The code given above is to only replace the first occurrence.

To replace all occurrences, you could do:

 variableABC = variableABC.replace(/B/g, "D");  

To replace all occurrences and ignore casing

 variableABC = variableABC.replace(/B/gi, "D");  

Solution 2 - Javascript

Isn't string.replace returning a value, rather than modifying the source string?

So if you wanted to modify variableABC, you'd need to do this:

var variableABC = "A B C";

variableABC = variableABC.replace('B', 'D') //output: 'A D C'

Solution 3 - Javascript

Strings are always modelled as immutable (atleast in heigher level languages python/java/javascript/Scala/Objective-C).

So any string operations like concatenation, replacements always returns a new string which contains intended value, whereas the original string will still be same.

Solution 4 - Javascript

If you just want to clobber all of the instances of a substring out of a string without using regex you can using:

    var replacestring = "A B B C D"
    const oldstring = "B";
    const newstring = "E";
    while (replacestring.indexOf(oldstring) > -1) {
        replacestring = replacestring.replace(oldstring, newstring);
    }        
    //result: "A E E C D"

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionAviram NetanelView Question on Stackoverflow
Solution 1 - JavascriptMunimView Answer on Stackoverflow
Solution 2 - JavascriptJonView Answer on Stackoverflow
Solution 3 - JavascriptSriharshaView Answer on Stackoverflow
Solution 4 - Javascriptstackuser83View Answer on Stackoverflow