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

Java使用String.split拆分字符串出现空白元素的原因是什么?

问题解答

空白项出现的原因

  • 你使用的正则"\\(|\\)|,"仅匹配了(、)、,三类字符作为分隔符,没有匹配两个括号组之间的空格,这部分未被匹配的空格会成为拆分后的独立元素,也就是你看到的空白项。
  • 其次Java的String.split默认会保留两个相邻匹配项之间的空字符串,就算后续把空格加入分隔符规则,如果仅匹配单个分隔符,遇到)+空格+(这类连续分隔符组合时,依然会拆分出空串。

修正方案

调整正则为匹配连续的所有分隔符即可,示例代码如下:

import java.util.Arrays;

// 原字符串
String str = "(B,C) (D,E) (A,B)";
// 字符组匹配()、空格、逗号,+号表示将连续的多个分隔符视为一个整体拆分
String[] temp = str.split("[()\\s,]+");
// 过滤掉字符串开头匹配分隔符产生的空串
String[] res = Arrays.stream(temp).filter(s -> !s.isEmpty()).toArray(String[]::new);

最终得到的res就是你需要的[B,C,D,E,A,B]。

第二种实现方案的局限性

你提到的按空格拆分后取固定索引字符的方案,仅适用于括号内都是单个字符的固定格式场景,如果后续括号内的字符长度发生变化(比如出现(AB,CD)这类内容)就会失效,通用性不如正则拆分的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 18:15:01