Подтвердить что ты не робот

Node.js string.replace не работает?

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

но "variableABC" не изменился:

variableABC = 'A B C'

когда я хочу, чтобы он был "A D C".

4b9b3361

Ответ 1

В соответствии со стандартом Javascript String.replace не должен изменять сама строка. Он просто возвращает измененную строку. Дополнительную информацию можно найти в документации разработчика Mozilla.

Вы всегда можете просто задать строку для измененного значения:

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

Изменить: приведенный выше код должен заменить только первое вхождение.

Чтобы заменить все вхождения, вы можете сделать:

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

Чтобы заменить все вхождения и игнорировать корпус

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

Ответ 2

Не является ли string.replace возвращать значение, а не изменять исходную строку?

Итак, если вы хотите изменить переменнуюABC, вам нужно будет сделать это:

var variableABC = "A B C";

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

Ответ 3

Строки всегда моделируются как неизменяемые (по крайней мере, в языках более высокого уровня: python/java/javascript/ Scala/Objective-C).

Таким образом, любые строковые операции, такие как конкатенация, замены всегда, возвращают новую строку, которая содержит заданное значение, тогда как исходная строка будет по-прежнему одинаковой.

Ответ 4

Если вы просто хотите сгладить все экземпляры подстроки из строки без использования регулярного выражения, вы можете использовать:

    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"