Javascript - ¿Cómo mostrar caracteres de escape en una cadena? [duplicar]

Very simple question, but for some reason I can't find the answer anywhere after 10 minutes of Googling. How can I show escape characters when printing in Javascript?

Ejemplo:

str = "Hello\nWorld";
console.log(str);

Da:

Hello
World

When I want it to give:

Hello\nWorld

preguntado el 10 de febrero de 14 a las 08:02

This question is marked as a duplicate, but I think the answer that everyone expects is here. :) -

I'd like to add the answer that one can simply use String.raw`Hello\nWorld` but this question has been incorrectly marked as duplicate -

3 Respuestas

Si tu meta es tener

str = "Hello\nWorld";

and output what it contains in string literal form, you can use JSON.stringify:

console.log(JSON.stringify(str)); // ""Hello\nWorld""

const str = "Hello\nWorld";
const json = JSON.stringify(str);
console.log(json); // ""Hello\nWorld""
for (let i = 0; i < json.length; ++i) {
    console.log(`${i}: ${json.charAt(i)} (0x${json.charCodeAt(i).toString(16).toUpperCase().padStart(4, "0")})`);
}
.as-console-wrapper {
    max-height: 100% !important;
}

console.log adds the outer quotes (at least in Chrome's implementation), but the content within them is a string literal (yes, that's somewhat confusing).

JSON.stringify takes what you give it (in this case, a string) and returns a string containing valid JSON for that value. So for the above, it returns an opening quote ("), la palabra Hello, a backslash (\), la carta n, la palabra World, and the closing quote ("). The linefeed in the string is escaped in the output as a \ y una n because that's how you encode a linefeed in JSON. Other escape sequences are similarly encoded.

Respondido el 27 de enero de 22 a las 19:01

@icosamuel - There is no backslash in that string. "asdasd\Sasdasd" is "asdasdSasdasd". When you escape a character that doesn't have special meaning, the result is just the character. Put it another way, "\S".length is 1, because that defines a one-character string with an S in it, exactly like "S" lo hace. - TJ Crowder

@icosamuel - Not with a string literal; as soon as the string literal is parsed, that \ is gone because it has no meaning. If you use a template literal, you can use the String.raw tagged template function: String.raw`\S` (notice that those are backticks, not quotes) returns "\\S". - TJ Crowder

I hadn't thought of using JSON.stringify on anything other than objects, this is super-helpful. Thanks! - jose powlison

@BobStein - Done! - TJ Crowder

@SanjayVamja - Yes, that's U + 00A0, the primary non-breaking space. The escape for it in a JavaScript string literal is \xA0 or \u00A0, but it's perfectly valid as a literal character. - TJ Crowder

JavaScript uses the \ (backslash) as an escape characters for:

  • \' single quote
  • \ "comillas dobles
  • \ barra invertida
  • \ n nueva línea
  • \ r retorno de carro
  • pestaña \ t
  • \ b retroceso
  • \ f formulario de alimentación
  • \v vertical tab (IE < 9 treats '\v' as 'v' instead of a vertical tab ('\x0B'). If cross-browser compatibility is a concern, use \x0B instead of \v.)
  • \0 null character (U+0000 NULL) (only if the next character is not a decimal digit; else it’s an octal escape sequence)

Note that the \v and \0 escapes are not allowed in JSON strings.

Respondido 10 Feb 14, 08:02

You have to escape the backslash, so try this:

str = "Hello\\nWorld";

Aquí are more escaped characters in Javascript.

Respondido 10 Feb 14, 08:02

Only this one works for backslash -stringify does not especially if you put it alone. - user5515

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.