You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Java中使用split(".")返回空数组,用split("\\.")才正常是什么原因?

Java split(".")返回空数组的原因

核心原理

Java中String.split()方法的入参是正则表达式字符串,而非普通的字面量分隔符,出现该差异的本质是正则元字符转义规则和Java字符串转义规则的双重作用。


具体原因拆解

  • 调用split(".")的情况:
    正则语法中.属于特殊元字符,作用是匹配任意单个字符。此时字符串"12.23.3.45"的每一位字符都会被识别为分隔符,分割后所有内容都会被当作分隔符剔除,最终返回空数组。
  • 调用split("\\.")的情况:
    如果你需要匹配字面量的.符号,首先要在正则规则中对元字符.转义,写为\.;但Java字符串本身的反斜杠\也是转义字符,要在Java字符串中表示一个普通的\,需要连续写两个\\。两层转义叠加后,"\\."最终传递给正则引擎的内容就是\.,可以正确匹配字面量的点号,得到预期的分割结果。

补充优化方案

如果不想手动处理多层转义,也可以使用Pattern.quote()方法包裹分隔符,直接传入字面量即可,示例如下:

import java.util.*;
import java.util.regex.Pattern;

public class Main {
    public static void main(String[] args) {
        String str = "12.23.3.45";
        String[] str1 = str.split(Pattern.quote("."));
        System.out.println(Arrays.toString(str1));
    }
}
// 输出:[12, 23, 3, 45]

内容的提问来源于stack exchange,提问作者Amitesh Kumar

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 15:36:02