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

Java中String.split(delim)处理开头含分隔符字符串生成空字符串的问题

Java String.split() 去除开头空字符串的解决方案

针对你遇到的String.split()处理以分隔符开头的字符串时出现开头空串的问题,以下是几种实用解决方法:

方法一:先修剪字符串首尾空白再拆分

如果原字符串首尾是空白字符,先调用trim()去除首尾空白,再执行拆分操作:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String str = " aaa bbb ccc ";
        String[] s = str.trim().split("[^\\w]+");
        System.out.println(Arrays.toString(s)); // 输出: [aaa, bbb, ccc]
    }
}

方法二:替换开头的分隔符后再拆分

通过正则替换掉字符串开头的所有目标分隔符,避免拆分出空串:

import java.util.Arrays;

public class Main {
    public static void main(String[] args) {
        String str = " aaa bbb ccc ";
        // 替换开头的所有非单词字符为空
        String processedStr = str.replaceAll("^[^\\w]+", "");
        String[] s = processedStr.split("[^\\w]+");
        System.out.println(Arrays.toString(s)); // 输出: [aaa, bbb, ccc]
    }
}

方法三:用Stream过滤空字符串

如果拆分结果中存在任意位置的空字符串(不止开头),可以通过Java 8+的Stream过滤掉空元素:

import java.util.Arrays;
import java.util.stream.Collectors;

public class Main {
    public static void main(String[] args) {
        String[] s = " aaa bbb ccc ".split("[^\\w]+");
        String[] result = Arrays.stream(s)
                                .filter(item -> !item.isEmpty())
                                .toArray(String[]::new);
        System.out.println(Arrays.toString(result)); // 输出: [aaa, bbb, ccc]
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 17:32:40