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

Java如何将点分隔的字符串转换为List<String>集合

错误原因

你之前的代码无法正常拆分的核心原因有两个:

  • String.split() 方法的入参是正则表达式,. 在正则语法中是特殊元字符,用于匹配任意单个字符,不能直接用来匹配字面量的点号,需要做转义处理
  • 你传入的分隔符参数为/./,和你实际字符串的点号分隔规则完全不匹配,没有触发任何拆分逻辑,所以最终只得到1个包含完整原字符串的元素
高效实现方案

基础版本(全Java版本通用)

如果不需要对返回的List做增删操作,直接用以下写法即可,性能满足绝大多数业务场景:

String s = "text.text1.text2.text3";
List<String> list = Arrays.asList(s.split("\\."));

注意:Arrays.asList() 返回的是固定长度的List,不支持add()、remove()等修改操作,如果你需要可变List,可在外层套一层ArrayList:

List<String> list = new ArrayList<>(Arrays.asList(s.split("\\.")));

特殊场景适配

如果你的字符串存在开头/结尾带点、或者连续多个点的情况,需要保留拆分出来的空字符串,可给split方法传入第二个参数-1:

// 示例字符串:开头带点,中间有连续两个点
String s = ".text1..text2.text3.";
// 第二个参数为负时,会保留所有拆分出的空字符串
List<String> list = Arrays.asList(s.split("\\.", -1));

高并发/大数量场景优化

如果你需要频繁执行点号拆分操作(比如处理百万级以上字符串),可以预编译正则表达式全局复用,避免每次调用split都重复编译正则,进一步提升性能:

// 全局预编译正则,Pattern是线程安全的可直接复用
private static final Pattern DOT_SEPARATOR_PATTERN = Pattern.compile("\\.");

// 拆分时直接调用
public List<String> splitByDot(String s) {
    return DOT_SEPARATOR_PATTERN.splitAsStream(s)
            .collect(Collectors.toList());
}

内容的提问来源于stack exchange,提问作者Jim Quitte

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.22 01:06:03