Necesito representar una cadena exactamente como la obtengo del servidor, por ejemplo, si obtengo una cadena que contiene "\t", necesito que se represente como "\t" y no como espacio/s. En el estado del componente veo que la cadena aparece con los caracteres especiales pero renderizada sin:
estado: '\"id\"\t\"name\n key\"'
lo que se representa: "id" "name key"
¿Cómo puedo evitar que esto suceda?
Dado que JS y DOM analizan de forma predeterminada caracteres especiales como \n , puede definir caracteres especiales que desee evitar que se comporten de la manera predeterminada y reemplazarlos con el original más una barra invertida antes:
Eche un vistazo a este fragmento ejecutable:
let textWithSpecialChars = `"id"\t"name\n key\f \r \b"`; const specialChars = ['\\b', '\\r', '\\f', '\\n', '\\t']; let modifiedTextWithSpecialChars = JSON.stringify(textWithSpecialChars); specialChars.forEach((char) => { modifiedTextWithSpecialChars = modifiedTextWithSpecialChars.replace(char, '\\' + char); }); console.log(modifiedTextWithSpecialChars); // "\"id\"\\t\"name\\n key\\f \\r \\b\"" console.log(JSON.parse(modifiedTextWithSpecialChars)); // "id"\t"name\n key\f \r \b" console.log(textWithSpecialChars); // "id" "name // key // " document.body.innerHTML = JSON.parse(modifiedTextWithSpecialChars)\n con \\n . Devuelva ese valor a la cadena de modificación y continúe hasta que se reemplacen todos los caracteres especiales. El resultado en cadena de esto será '\"id\"\\t\"name\\n key\\f \\r \\b\"'