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

Java中String.split()返回结果长度不符预期的原因咨询

问题原因分析

首先,这是因为Java中String.split()方法的默认行为会忽略分割后末尾的空字符串。

咱们拆解一下你的例子:

  • 原始字符串:"DK4..||VSDK4|"
  • 按|分割的话,实际会得到四个部分:"DK4.."、""(两个|之间的空内容)、"VSDK4"、""(最后一个|后面的空内容)

但你调用的是无第二个参数的split("\\|"),它等价于调用split("\\|", 0)。根据Java的设计逻辑,当第二个参数为0时,方法会自动丢弃分割结果末尾的所有空字符串,所以最后那个""被丢掉了,最终数组长度就变成了3。

解决办法

如果想要保留所有的空字符串(包括末尾的),只需要给split()方法传入第二个参数-1即可:

String data = "DK4..||VSDK4|";
String[] tokens = data.split("\\|", -1);
System.out.println(tokens.length); // 输出4,符合预期

这里补充一下第二个参数的作用细节:

  • 当参数>0:最多分割指定次数,末尾空串会保留
  • 当参数=0:分割尽可能多次,但会丢弃末尾所有空串
  • 当参数<0:分割尽可能多次,保留所有空串(包括开头和末尾的)

内容的提问来源于stack exchange,提问作者Kedar S. Dixit

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 11:53:02