1. 概述
字符串分割是Java开发中的高频操作。本文将介绍几种简单实用的API,帮助你在不同场景下高效处理字符串分割任务。这些方法各有特点,掌握它们能让你在编码时游刃有余。
2. String.split() 方法
Java核心库中的String
类自带split()
方法,这是最基础也最常用的分割方式。它根据指定分隔符将字符串拆分为字符串数组,足以应对大多数场景。
基础用法示例
✅ 按逗号分割:
String[] splitted = "peter,james,thomas".split(",");
✅ 按空格分割:
String[] splitted = "car jeep scooter".split(" ");
⚠️ 按点分割需转义:
String[] splitted = "192.168.1.178".split("\\.");
✅ 多字符分割(正则表达式):
String[] splitted = "b a, e, l.d u, n g".split("\\s+|,\\s*|\\.\\s*"));
3. StringUtils.split() 方法
Apache Commons Lang提供的StringUtils
类是String.split()
的增强版,其split()
方法具有空安全特性,默认使用空格作为分隔符。
核心优势
✅ 自动处理多余空格:
String[] splitted = StringUtils.split("car jeep scooter");
即使输入字符串包含连续空格,也能正确分割,避免生成空字符串元素。
4. Guava Splitter API
Google Guava库提供了流式API风格的Splitter
,通过链式调用实现灵活的分割控制,特别适合需要精细处理的场景。
链式调用示例
List<String> resultList = Splitter.on(',')
.trimResults() // 去除结果元素两端空格
.omitEmptyStrings() // 忽略空字符串
.splitToList("car,jeep,, scooter");
5. 分割并去除空格
实际开发中常遇到分隔符周围存在多余空格的情况。以下是两种高效处理方案:
方案一:正则表达式预处理
String input = " car , jeep, scooter ";
String[] splitted = input.trim().split("\\s*,\\s*");
trim()
先去除字符串首尾空格- 正则表达式
\s*,\s*
处理逗号两侧的空格
方案二:Java 8 Stream处理
String[] splitted = Arrays.stream(input.split(","))
.map(String::trim) // 对每个元素去除空格
.toArray(String[]::new);
6. 将字符串均分为两部分
需要将字符串精确对半分割时,可通过计算中点配合substring()
实现:
String hello = "Baeldung";
int mid = hello.length() / 2;
String[] parts = {
hello.substring(0, mid), // 前半部分
hello.substring(mid) // 后半部分
};
7. 总结
场景 | 推荐方案 | 特点 |
---|---|---|
简单分割 | String.split() |
原生支持,无需依赖 |
空值安全 | StringUtils.split() |
自动处理空输入和多余空格 |
复杂控制 | Guava Splitter |
链式调用,功能强大 |
精确对半 | substring() |
手动计算位置 |
💡 踩坑提示:使用
String.split()
时,当分隔符是正则表达式特殊字符(如.
、|
等),务必记得转义!否则会得到意外结果。
本文所有示例代码已上传至GitHub仓库,可直接运行验证。