Java split() 必须转义的特殊符号
Java 的 String.split() 底层使用正则表达式实现,正则里有特殊语法含义的字符,直接用会报错/结果错误,必须加转义符 \\。
一、必须转义的 12 个核心特殊符号
这是最常用、最容易踩坑的清单,直接使用必出错:
| 特殊符号 | 转义写法 | 说明 |
|---|---|---|
.(点) | \\. | 匹配任意字符,不转义会分割所有字符 |
$ | \\$ | 匹配行结尾 |
^ | \\^ | 匹配行开头 |
| ` | `(竖线) | `\ |
* | \\* | 匹配0次或多次 |
+ | \\+ | 匹配1次或多次 |
? | \\? | 匹配0次或1次 |
( | \\( | 分组开始 |
) | \\) | 分组结束 |
[ | \\[ | 字符集开始 |
] | \\] | 字符集结束 |
\(反斜杠) | \\\\ | 转义符本身,需写4个\ |
二、高频使用示例(直接复制可用)
1. 按点 . 分割(最常用)
// 错误写法:"a.b.c".split(".") → 得到空数组
// 正确写法
String[] arr = "a.b.c".split("\\.");
// 结果:[a, b, c]
2. 按竖线 | 分割
// 错误写法:"a|b|c".split("|") → 每个字符都分割
// 正确写法
String[] arr = "a|b|c".split("\\|");
// 结果:[a, b, c]
3. 按反斜杠 \ 分割(Windows 路径)
// 字符串里一个 \ 要写成 \\
// split 里要写成 \\\\
String path = "C:\\test\\demo.java";
String[] arr = path.split("\\\\");
// 结果:[C:, test, demo.java]
4. 按括号 () 分割
String str = "hello(world)java";
String[] arr = str.split("\\(|\\)");
// 结果:[hello, world, java]
三、不需要转义的常见符号
这些直接用即可,无需加 \\:
- _ = / : , ; ' " ! @ # % & -
示例:
// 逗号、减号、冒号 直接分割
"a-b:c,d".split(",");
"a-b:c,d".split("-");
四、安全写法(推荐)
如果你不确定字符是否特殊,用 Pattern.quote() 包裹,自动处理转义,永不报错:
String str = "123$456^789";
// 自动转义特殊字符,不用手动写 \\
String[] arr = str.split(java.util.regex.Pattern.quote("$"));
总结
- 核心 12 个必须转义:
. $ ^ | * + ? ( ) [ ] \ - 转义规则:特殊符号前加
\\,反斜杠\写\\\\ - 最稳妥方案:使用
Pattern.quote()自动转义