什么是逃脱角色?

izb*_*izb 111 java string escaping

我知道Java中的一些转义字符,例如

\n : Newline
\r : Carriage return
\t : Tab
\\ : Backslash
...
Run Code Online (Sandbox Code Playgroud)

某处有完整的清单吗?

rtp*_*son 169

您可以在此处找到完整列表.

  • \t 此时在文本中插入一个选项卡.
  • \b 此时在文本中插入退格.
  • \n 此时在文本中插入换行符.
  • \r 此时在文本中插入回车符.
  • \f 此时在文本中插入换页.
  • \' 此时在文本中插入单引号字符.
  • \" 此时在文本中插入双引号字符.
  • \\ 此时在文本中插入反斜杠字符.

  • 该列表缺少Unicode和八进制转义:\ u1234\012\01\0 (25认同)
  • `\ a`不能在javac 1.8.0_20中编译:`非法转义字符:字符串test ="\ a";; (7认同)
  • "在运行编译器之前,会对Unicode转义进行预处理." - [Mark Peters](http://stackoverflow.com/a/3866219/1048186).所以它们与此处列出的标准String转义不同.感谢Jan对[此答案]的评论(http://stackoverflow.com/a/29064518/1048186) (3认同)
  • 这是[java规范中的unicode转义序列的段落](http://docs.oracle.com/javase/specs/jls/se7/html/jls-3.html#jls-3.3) (2认同)
  • 当谈到 Java 16 时,这个列表几乎是完整的。我认为 oracle 教程不会定期更新。您最好的选择是检查 [JLS](https://docs.oracle.com/javase/specs/jls/se16/html/jls-3.html#jls-3.10.7) (2认同)

Ehr*_*ryk 38

Java Escape Sequences:

\u{0000-FFFF}  /* Unicode [Basic Multilingual Plane only, see below] hex value 
                  does not handle unicode values higher than 0xFFFF (65535),
                  the high surrogate has to be separate: \uD852\uDF62
                  Four hex characters only (no variable width) */
\b             /* \u0008: backspace (BS) */
\t             /* \u0009: horizontal tab (HT) */
\n             /* \u000a: linefeed (LF) */
\f             /* \u000c: form feed (FF) */
\r             /* \u000d: carriage return (CR) */
\"             /* \u0022: double quote (") */
\'             /* \u0027: single quote (') */
\\             /* \u005c: backslash (\) */
\{0-377}       /* \u0000 to \u00ff: from octal value 
                  1 to 3 octal digits (variable width) */
Run Code Online (Sandbox Code Playgroud)

所述基本多语种平面是从0x0000的Unicode值- 0xFFFF的(0 - 65535).额外的飞机只能用Java在多个字符中指定:埃及的heiroglyph A054(放下dude)是U+1303F/ 𓀿并且必须分成"\uD80C\uDC3F"(UTF-16)Java字符串.其他一些语言支持更高的平面"\U0001303F".

  • @Jan它工作得很好,也许太好了.例如,与`\ r`和`\n`不同,unicode转义在编译器运行之前被预处理,因为您链接的问题指定了.因此,它会在代码中插入文字换行符并因此而失败.但是,转义码是"正常工作",因为它打算在规范中工作. (5认同)
  • `\ u000a`似乎不起作用 - >` - 无效的字符常量`看到更多[这里](http://stackoverflow.com/questions/3866187/why-cant-i-use-u000d-and-u000a-as -cr-和-LF-在-java的) (2认同)