замена javascript не заменяет строку ноль {0}

#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])
);