如何在JavaScript字符串中使用\n

9

例子:

var i = 'Hello \n World'
console.log(i)

Would return:

Hello
World

and I want it to return

Hello \n World

我不想在数据库中存储换行符,因此需要进行翻译。


对于那些想要在数据库中存储 \n 的人

您无需转义字符,因为您的文档数据库将使用 JSON.stringify 进行处理。我使用 ArangoDB 并且它能够正常工作,感谢 @PaulPro


4
您需要转义转义字符 \\n - user2033671
@Paulpro 这是因为 \n 会创建新的行,无法存储在 JSON 或文档数据库中。 - itsezc
2
@Lieblingsmensch 当你将某物存储在数据库中时,应该在插入时正确地对其进行转义。提前尝试自行转义是非常糟糕的做法,可能导致严重的安全漏洞。如果你要插入 JSON 数据,你的数据库层应该对其进行 JSON.stringify 处理。JSON.stringify( 'Hello \n World' ) 也会给你正确的值来存储在数据库中,但是 JSON.stringify( 'Hello \\n World' ) 会给你错误的值,因为它会被双重转义。 - Paul
@Paulpro 謝謝你提醒我,我會記在心裡的。 - itsezc
1
好的,在编辑了我的代码之后,@PaulPro 是完全正确的,不需要转义字符,因为文档数据库很可能会为您完成它,如果没有,您仍然只需要做 \n 而不是 \n。 - itsezc
显示剩余3条评论
3个回答

17

你需要用\\转义\,这样告诉解释器只是显示该字符而不将其处理为特殊字符:

var i = 'Hello \\n World';
console.log(i)

以下是所有的字符串转义代码:
  • \0 NUL字符(\u0000)
  • \b 退格符(\u0008)
  • \t 水平制表符(\u0009)
  • \n 换行符(\u000A)
  • \v 垂直制表符(\u000B)
  • \f 换页符(\u000C)
  • \r 回车符(\u000D)
  • \" 双引号(\u0022)
  • \' 单引号或撇号(\u0027)
  • \\ 反斜杠(\u005C)
  • \x XX 由两个十六进制数字XX指定的Latin-1字符
  • \u XXXX 由四个十六进制数字XXXX指定的Unicode字符

2

\n 转义为 \\n 并将字符串存储在数据库中。然而,只有 \n 也可以存储在数据库中。


1

使用“\\n”代替“\n”以使其正常工作,selenium java同理。

      WebElement searchBox = driver.findElement(By.name("q"));
      searchBox.sendKeys("Test \\n");
      searchBox.submit();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接