I have a string that looks something like this:
\"Line 1\\nLine 2\"
When I call length on it, though, it\'s one character short:
Whenever you get Javascript to interpret this string, the '\n' will be rendered as a newline (which is a single character, hence the length.)
To use the string as a literal backslash-n, try escaping the backslash with another one. Like so:
"Line 1\\nLine 2"
If you can't do this when the string is created, you can turn the one string into the other with this:
"Line 1\nLine 2".replace(/\n/, "\\n");
If you might have multiple occurrences of the newline, you can get them all at once by making the regex global, like this:
"Line 1\nLine 2\nLine 3".replace(/\n/g, "\\n");
\n
is the newline character. You can use "Line 1\\nLine 2"
to escape it.
Keep in mind that the actual representation of a new line depends on the system and could be one or two characters long: \r\n
, \n
, or \r
In JavaScript, a backslash in a string literal is the start of an escape code, for instance backslash n for a newline. But what if you want an actual backslash in the resulting string? One of the escape codes is backslash backslash, for an actual backslash.