Estoy tratando de procesar una salida de terminal. Digamos que es la cadena "\x1b[01;32mREADME.md". Tiene doble barra invertida. Si ejecuto console.log("\\x1b[01;32mREADME.md") , solo muestra una sola barra invertida, pero si la paso a toHtml de ansi-to-html, no funciona. Y por trabajo me refiero a transformar los personajes en html.
Probé varias soluciones relacionadas con replace o el hecho de que \ es U+5c en Unicode, pero nada funcionó. Las opciones en la biblioteca tampoco ayudan.
import Convert from "ansi-to-html"; export default function App() { const c = new Convert({ escapeXML: true }); const single = "\x1b[01;32mREADME.md"; const double = "\\x1b[01;32mREADME.md"; console.log(double) // prints single backslash const res1 = c.toHtml(single); const res2 = c.toHtml(double); return ( <div className="App"> single backslash works: <pre>{single}</pre> <pre>{res1}</pre> <br /> <br /> double backslash doesnt work: <pre>{double}</pre> <pre>{res2}</pre> </div> ); }Cualquier ayuda es apreciada.
Puede usar la función String.raw :
const double = String.raw`\\x1b[01;32mREADME.md`;Con esto no necesitas usar convertir:
export default function App() { const single = String.raw`\x1b[01;32mREADME.md`; const double = String.raw`\\x1b[01;32mREADME.md`; const res1 = single; const res2 = double; return ( <div className="App"> single backslash works: <pre>{single}</pre> <pre>{res1}</pre> <br /> <br /> double backslash doesnt work: <pre>{double}</pre> <pre>{res2}</pre> </div> ); }