El objetivo de este problema es reemplazar cada primera letra de la palabra en un párrafo. Aquí está mi código.
function isAlphabet(char){ return (/[az]/).test(char); } // TODO: Implement this method function capitalise(paragraph) { if (paragraph.length===1){ return paragraph.toUpperCase(); } paragraph=paragraph.charAt(0).toUpperCase()+paragraph.slice(1); for(let i=2;i<paragraph.length;i++){ if(paragraph[i-1]==' ' && isAlphabet(paragraph[i])){ let char_new=String.fromCharCode(paragraph.charCodeAt(i)-32) paragraph[i] = char_new; } } return paragraph; }Sin embargo, aparece el siguiente error cuando escribo esta línea de código:
let char_new=String.fromCharCode(paragraph.charCodeAt(i)-32) paragraph[i] = char_new;y el error dice:
/sidharthgopalakrishnan-ME_PE_PROGRAMMING_CONSTRUCTS_NEW-bba4832c-4354-4df8-b7e5-b0340a954783/user/Capitalise.js:59 párrafo[i] = char_new; ^ TypeError: no se puede asignar a la propiedad de solo lectura '4' de la cadena 'El rápido zorro marrón salta sobre el perro perezoso'.
Lo que quería saber era ¿qué es TypeError? y ¿qué significa una propiedad de solo lectura? Esto es algo en lo que quiero más información y, por último, ¿qué puedo hacer para que este código funcione en javascript?
Gracias y saludos
Actualización: Esto es lo que probé más:
function isAlphabet(char) { return /[az]/.test(char); } function capitalise(paragraph) { if (paragraph.length === 1) { return paragraph.toUpperCase(); } let new_para = paragraph.charAt(0).toUpperCase() + paragraph.slice(1); for (let i = 2; i < paragraph.length; i++) { if (paragraph[i - 1] == " " && isAlphabet(paragraph[i])) { // console.log(String.fromCharCode(paragraph.charCodeAt(i) - 32)); let new_para = paragraph.replace( paragraph[i], String.fromCharCode(paragraph.charCodeAt(i) - 32) ); console.log(new_para) } } return new_para; }Sin embargo, el cambio no se asigna a la variable en la que lo configuré, a través de cada iteración, la primera letra respectiva se pone en mayúscula pero no afecta el estado original. ¿Puede alguien ayudarme con esto más?