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
相关产品推荐
相关产品推荐

