Java 实例 字符串分割
Java 字符串分割的核心方法
Java 的
String 类提供了 split() 方法用于字符串分割,它有两个常用重载版本:split(String regex):按正则表达式分割字符串,返回字符串数组split(String regex, int limit):指定分割次数的版本,limit控制返回数组的长度
下面通过不同场景的实例,带你掌握所有常用用法:
实例 1:基础分割(单个分隔符)
最常见的场景,比如按逗号、空格、竖线等单个字符分割。
public class StringSplitExample {
public static void main(String[] args) {
// 原始字符串(按逗号分割)
String str1 = "Java,Python,Go,C++";
// 按逗号分割
String[] result1 = str1.split(",");
// 输出结果
System.out.println("基础分割(逗号):");
for (String s : result1) {
System.out.println(s);
}
// 按空格分割
String str2 = "Hello World Java";
String[] result2 = str2.split(" ");
System.out.println("\n基础分割(空格):");
for (String s : result2) {
System.out.println(s);
}
}
}
输出结果:
基础分割(逗号):
Java
Python
Go
C++
基础分割(空格):
Hello
World
Java
实例 2:分割特殊字符(正则元字符)
.、|、*、+ 等是正则表达式的元字符,直接分割会失效,需要用 \\ 转义。public class SpecialCharSplit {
public static void main(String[] args) {
// 按点(.)分割(注意转义)
String str1 = "www.baidu.com";
// 错误写法:str1.split(".") → 会分割出空数组
String[] result1 = str1.split("\\.");
System.out.println("按点分割:");
for (String s : result1) {
System.out.println(s);
}
// 按竖线(|)分割(转义)
String str2 = "Java|Python|Go";
String[] result2 = str2.split("\\|");
System.out.println("\n按竖线分割:");
for (String s : result2) {
System.out.println(s);
}
}
}
输出结果:
按点分割:
www
baidu
com
按竖线分割:
Java
Python
Go
实例 3:按多个分隔符分割
如果需要同时按多个字符分割(比如逗号、空格、竖线),可以用正则的
[] 或 | 组合。public class MultiDelimiterSplit {
public static void main(String[] args) {
// 混合分隔符:逗号、空格、竖线
String str = "Java,Python Go|C++";
// 方式1:用[]匹配多个分隔符(逗号、空格、竖线)
String[] result1 = str.split("[, |]");
System.out.println("按多个分隔符分割(方式1):");
for (String s : result1) {
System.out.println(s);
}
// 方式2:用|匹配多个分隔符(注意转义特殊字符)
String[] result2 = str.split(",| |\\|");
System.out.println("\n按多个分隔符分割(方式2):");
for (String s : result2) {
System.out.println(s);
}
}
}
输出结果:
按多个分隔符分割(方式1):
Java
Python
Go
C++
按多个分隔符分割(方式2):
Java
Python
Go
C++
实例 4:限制分割次数
使用
split(regex, limit) 控制分割的次数,limit 的取值规则:limit > 0:分割limit-1次,数组长度最多为limitlimit = 0:分割所有可能的次数(默认值),忽略末尾空字符串limit < 0:分割所有可能的次数,保留末尾空字符串
public class LimitSplitExample {
public static void main(String[] args) {
String str = "a,b,c,d,e";
// limit=3:分割2次,数组长度最多3
String[] result1 = str.split(",", 3);
System.out.println("limit=3 的结果(长度:" + result1.length + "):");
for (String s : result1) {
System.out.println(s);
}
// limit=0(默认):分割所有,忽略末尾空
String str2 = "a,b,c,,,";
String[] result2 = str2.split(",", 0);
System.out.println("\nlimit=0 的结果(长度:" + result2.length + "):");
for (String s : result2) {
System.out.println(s);
}
// limit=-1:分割所有,保留末尾空
String[] result3 = str2.split(",", -1);
System.out.println("\nlimit=-1 的结果(长度:" + result3.length + "):");
for (String s : result3) {
System.out.println("'" + s + "'"); // 空字符串显示为''
}
}
}
输出结果:
limit=3 的结果(长度:3):
a
b
c,d,e
limit=0 的结果(长度:3):
a
b
c
limit=-1 的结果(长度:6):
'a'
'b'
'c'
''
''
''
实例 5:处理空字符串(过滤无效分割结果)
当字符串有连续分隔符时,会产生空字符串,可通过流过滤掉:
import java.util.Arrays;
import java.util.stream.Collectors;
public class FilterEmptySplit {
public static void main(String[] args) {
String str = ",Java,,Python,,Go,";
// 先分割,再过滤空字符串
String[] result = Arrays.stream(str.split(","))
.filter(s -> !s.isEmpty()) // 过滤空字符串
.toArray(String[]::new);
System.out.println("过滤空字符串后的结果:");
for (String s : result) {
System.out.println(s);
}
}
}
输出结果:
过滤空字符串后的结果:
Java
Python
Go
总结
split()的参数是正则表达式,分割特殊元字符(.、|、*等)需要用\\转义。limit参数控制分割次数:正数限制长度、0 忽略末尾空、负数保留所有空字符串。- 处理连续分隔符时会产生空字符串,可通过
filter()过滤,或根据需求选择limit取值。
浙公网安备 33010602011771号