Java字符串转义
转义Java字符串中的特殊字符,包括Unicode转义序列
关于Java字符串转义
Java字符串使用反斜杠作为转义字符。与其他语言不同,Java的Unicode转义(\uXXXX)在编译的最早阶段就被处理,这意味着它们可以出现在代码的任何位置,不仅仅是字符串中。
正确的字符串转义对于处理国际化文本、特殊字符和跨平台兼容性至关重要。Java支持标准的转义序列以及Unicode转义,可以表示任何Unicode字符。
Unicode转义特性
Java的Unicode转义(\uXXXX)有一些独特的特性:
- Unicode转义在词法分析阶段处理,早于其他转义
- 可以在注释和标识符中使用Unicode转义
- \u后面必须正好跟4个十六进制数字
- 可以使用多个u,如 \uuuuXXXX(用于转义自身)
转义规则参考
| 转义序列 | Unicode | 说明 |
|---|---|---|
| \\ | U+005C | 反斜杠 |
| \' | U+0027 | 单引号 |
| \" | U+0022 | 双引号 |
| \n | U+000A | 换行符 |
| \r | U+000D | 回车符 |
| \t | U+0009 | 制表符 |
| \b | U+0008 | 退格符 |
| \f | U+000C | 换页符 |
| \uXXXX | U+XXXX | Unicode字符(4位十六进制) |
常见使用场景
国际化(i18n)
在属性文件和资源包中表示非ASCII字符。
JSON/XML处理
在Java代码中嵌入JSON或XML字符串时转义特殊字符。
正则表达式
在Java正则表达式中需要双重转义反斜杠。
数据库查询
构建SQL语句时处理字符串中的引号。
文本块(Java 13+)
Java 13引入了文本块(Text Blocks),使用三个双引号 """ 包围,可以包含多行文本而无需转义换行符。文本块保留格式,自动处理缩进,是处理长字符串的现代方式。
使用技巧
- 使用 StringEscapeUtils(Apache Commons)进行复杂的转义操作
- Properties文件中等号和冒号也需要转义
- 正则表达式中反斜杠需要写成 \\\\(四个反斜杠)
- 考虑使用文本块来简化多行字符串
- IDE通常提供字符串转义的快捷操作