#javascript #str-replace
Вопрос:
почему код ниже не заменяет {0}
var errorMessage = "Minimum {0} and maximum {1} characters allowed",spec =[1,60], dRegex;
for(i = 0; i<2; i ){
dRegex = new RegExp("\{" i "\}","g");
errorMessage.replace(dRegex,spec[i]);
}
"Minimum {0} and maximum 60 characters allowed"
Комментарии:
1.
.replace()
Метод возвращает новую строку с заменами. Это не изменяет исходную строку.2. На подобные вопросы очень часто можно ответить, проконсультировавшись с документацией MDN или из какого-либо другого надежного источника. (На самом деле
.replace()
на этом сайте есть много подобных вопросов.)
Ответ №1:
Вам нужно установить значение ошибки. замена не изменяет строку. Он возвращает измененную строку.
var errorMessage = "Minimum {0} and maximum {1} characters allowed",spec =[1,60], dRegex;
for(i = 0; i<2; i ){
dRegex = new RegExp("\{" i "\}","g");
errorMessage = errorMessage.replace(dRegex,spec[i]);
}
console.log(errorMessage)
Ответ №2:
Ответ уже дан (строки неизменяемы, поэтому вам необходимо переназначить значение операции замены).
В качестве альтернативы вы можете изучить литералы шаблонов
const specs = [1, 60];
const errorMessage = `Minimum ${specs[0]} and maximum ${
specs[1]} characters allowed`;
console.log(errorMessage);
// or replace immediately
console.log(
"Minimum {0} and maximum {1} characters"
.replace(/{(d )}/g, (a, b) => specs[b])
);