var variableABC = "A B C";
variableABC.replace('B', 'D') //wanted output: 'A D C'
но "variableABC" не изменился:
variableABC = 'A B C'
когда я хочу, чтобы он был "A D C".
var variableABC = "A B C";
variableABC.replace('B', 'D') //wanted output: 'A D C'
но "variableABC" не изменился:
variableABC = 'A B C'
когда я хочу, чтобы он был "A D C".
В соответствии со стандартом Javascript String.replace
не должен изменять сама строка. Он просто возвращает измененную строку. Дополнительную информацию можно найти в документации разработчика Mozilla.
Вы всегда можете просто задать строку для измененного значения:
variableABC = variableABC.replace('B', 'D')
Изменить: приведенный выше код должен заменить только первое вхождение.
Чтобы заменить все вхождения, вы можете сделать:
variableABC = variableABC.replace(/B/g, "D");
Чтобы заменить все вхождения и игнорировать корпус
variableABC = variableABC.replace(/B/gi, "D");
Не является ли string.replace возвращать значение, а не изменять исходную строку?
Итак, если вы хотите изменить переменнуюABC, вам нужно будет сделать это:
var variableABC = "A B C";
variableABC = variableABC.replace('B', 'D') //output: 'A D C'
Строки всегда моделируются как неизменяемые (по крайней мере, в языках более высокого уровня: python/java/javascript/ Scala/Objective-C).
Таким образом, любые строковые операции, такие как конкатенация, замены всегда, возвращают новую строку, которая содержит заданное значение, тогда как исходная строка будет по-прежнему одинаковой.
Если вы просто хотите сгладить все экземпляры подстроки из строки без использования регулярного выражения, вы можете использовать:
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"