Administrator
Published on 2026-04-19 / 0 Visits
0

Java split() 必须转义的特殊符号

#AI

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("$"));

总结

  1. 核心 12 个必须转义. $ ^ | * + ? ( ) [ ] \
  2. 转义规则:特殊符号前加 \\,反斜杠 \\\\\
  3. 最稳妥方案:使用 Pattern.quote() 自动转义