Java中的String.split()方法常用于将一个字符串按照指定分隔符拆分成多个子串。但由于该方法底层基于正则表达式,当分隔符本身包含正则特殊字符时,如果不做处理就会得到错误的分割结果。理解其匹配规则并掌握转义技巧,才能精准分割含分隔符的字符串。

为什么split会误判分隔符
split(String regex)把参数当作正则表达式。比如英文句点.在正则在表示任意字符,若直接用split(".")去按句点分割,会匹配每一个位置,返回空串数组。类似的还有|、*、+等。因此含这些符号的分隔符必须转义或忽略正则语义。
使用反斜杠转义特殊字符
在正则中,反斜杠后接字符可表示字面量。Java字符串里反斜杠要写成两个,所以分割句点要写split("\.")。下面示例按点号和竖线分割:
public class SplitDemo {
public static void main(String[] args) {
String text = "a.b|c.d";
// 按点号或竖线分割,需转义
String[] parts = text.split("\.|\|");
for (String s : parts) {
System.out.println(s);
}
}
}
使用Pattern.quote避免手动转义
如果分隔符是变量且可能含任意特殊字符,可用Pattern.quote()将其包裹为字面量模式,无需关心具体内容。
import java.util.regex.Pattern;
public class SplitQuote {
public static void main(String[] args) {
String text = "value1$key$value2";
String delimiter = "$key$";
// 将分隔符作为普通字符串处理
String[] result = text.split(Pattern.quote(delimiter));
for (String r : result) {
System.out.println(r);
}
}
}
限制分割次数
split还可接收limit参数控制拆分次数。例如split("\.", 2)只按第一个点号分成两段,其余点号保留。
| 方法签名 | 说明 |
|---|---|
| split(String regex) | 按正则全部分割 |
| split(String regex, int limit) | 限制最多生成limit个子串 |
小结
精准分割含分隔符字符串的核心是区分字面量与正则:固定简单分隔符用双反斜杠转义;动态或复杂分隔符优先使用Pattern.quote。掌握这两点即可避免绝大多数split使用错误。
JavaString_split正则表达式字符串分割转义字符修改时间:2026-07-24 16:09:20