Tengo una variable de cadena que contiene un carácter de control (nueva línea). Quiero generar esa variable pero con el carácter de control como su representación literal y no interpretada:
console.log(`Using "${nl}" as newline`) donde la variable nl puede contener uno de \n , \r o \r\n . La salida de esto es por supuesto
Usando
como nueva línea
pero debería ser por ejemplo
Usando "\r\n" como nueva línea
Supongo que de alguna manera necesito construir una cadena como esta
console.log('Using "\\r\\n" as newline') Así que he estado tratando de escapar de las barras invertidas en nl anteponiendo otra barra invertida usando nl.replace() pero eso no parece funcionar porque la variable nl en realidad no contiene ningún carácter de barra invertida.
¿Hay alguna manera de hacer esto de forma genérica, es decir, sin codificar explícitamente \n , \r y \r\n ?
Puede eliminar las comillas dobles y usar JSON.stringify , que también produce esas comillas y codifica caracteres de nueva línea (y más, como TAB, BS, FF, y escapa de comillas dobles y barra invertida):
let nl = "\r\n"; console.log(`Using ${JSON.stringify(nl)} as newline`); // Or with a newline in a template literal: nl = ` `; console.log(`Using ${JSON.stringify(nl)} as newline`);