¿Puede alguien ayudarme a verificar este código a continuación y decirme qué estoy haciendo mal?
Resultado Esperado
'2022-04-02'Resultado de salida
"02022-04-2"código
const str = '2022-04-2'; console.log(str.substring(8)); console.log(str.replace(str.substring(8, 9), "0" + str.substring(8,9))); // expected output: "2022-04-02"replace with a string target encontrará y reemplazará la primera aparición del objetivo. La primera aparición de 2 en 2022-04-2 está aquí:
2022-04-2 ^y no aquí:
2022-04-2 ^ Para hacer lo que quieras, trabaja con índices, no uses replace :
const str = '2022-04-2'; console.log(str.substring(0, 8) + "0" + str.substring(8));O sea más preciso acerca de su orientación, si la usa:
const str = '2022-04-2'; console.log(str.replace(/\b(\d)\b/g, "0$1"))Es porque replace no funciona como crees. En el código que escribió, busca la primera aparición de la cadena "2" y la reemplaza con "02" . En su caso, para "2022-04-02" el primer "2" es el primer carácter.
Sugiero un enfoque diferente:
const str = "2022-04-2"; const [year, month, day] = str.split("-"); const formattedDate = `${year}-${month.padStart(2, "0")}-${day.padStart(2, "0")}`; console.log(formattedDate);Simplemente puede lograrlo usando el método string.split() .
demostración :
const str = '2022-04-2'; const splittedStr = str.split('-'); splittedStr[2] = '0' + splittedStr[2] console.log(splittedStr.join('-'))