Javascript - 如何在字符串中显示转义字符?

IT技术 javascript escaping
2021-02-02 15:12:46

非常简单的问题,但由于某种原因,我在谷歌搜索 10 分钟后无法在任何地方找到答案。在 Javascript 中打印时如何显示转义字符?

例子:

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

给出:

Hello
World

当我希望它给出:

Hello\nWorld
3个回答

如果你的目标是拥有

str = "Hello\nWorld";

并以字符串文字形式输出它包含的内容,您可以使用JSON.stringify

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

console.log 添加外部引号(至少在 Chrome 的实现中),但其中的内容是字符串文字(是的,这有点令人困惑)。

JSON.stringify接受你给它的东西(在这种情况下,一个字符串)并返回一个包含该值的有效 JSON 的字符串。因此,对于上述内容,它返回一个开始引号 ( ")、单词Hello、反斜杠 ( \)、字母n、单词World和结束引号 ( ")。字符串中的换行在输出中作为 a\和 an转义,n因为这是您在 JSON 中对换行进行编码的方式。其他转义序列的编码方式类似。

@icosamuel - 该字符串中没有反斜杠。"asdasd\Sasdasd""asdasdSasdasd"当您转义一个没有特殊含义的字符时,结果只是该字符。换句话说,"\S".length就是 1,因为它定义了一个带有 S 的单字符字符串,与 1 完全一样"S"
2021-03-18 15:12:46
@icosamuel - 没有字符串文字;一旦字符串文字被解析,\它就消失了,因为它没有意义。如果您使用模板文字,您可以使用带String.raw标签的模板函数:(String.raw`\S`注意那些是反引号,不是引号)返回"\\S"
2021-03-20 15:12:46
我没想过在对象以外的任何东西上使用 JSON.stringify,这非常有用。谢谢!
2021-03-20 15:12:46
这完成了工作,谢谢!我接受这个答案的原因是因为它适用于非文字字符串并且不涉及修改字符串本身。
2021-04-02 15:12:46
@BobStein - 完成!
2021-04-11 15:12:46

JavaScript 使用 \(反斜杠)作为转义字符:

  • \' 单引号
  • \" 双引号
  • \ 反斜杠
  • \n 换行
  • \r 回车
  • \t 标签
  • \b 退格
  • \f 换页
  • \v 垂直制表符(IE < 9 将 '\v' 视为 'v' 而不是垂直制表符 ('\x0B')。如果需要考虑跨浏览器兼容性,请使用 \x0B 而不是 \v。)
  • \0 空字符 (U+0000 NULL)(仅当下一个字符不是十进制数字时;否则它是八进制转义序列)

请注意,JSON 字符串中不允许使用 \v 和 \0 转义符。

你必须逃避反斜杠,所以试试这个:

str = "Hello\\nWorld";

这里有更多 Javascript 中的转义字符。

只有这个适用于反斜杠 -stringify 尤其是当你单独使用它时。
2021-03-27 15:12:46