Java 实例 字符串分割

Java 字符串分割的核心方法

Java 的 String 类提供了 split() 方法用于字符串分割,它有两个常用重载版本:
 
  1. split(String regex):按正则表达式分割字符串,返回字符串数组
  2. 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 次,数组长度最多为 limit
  • limit = 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
 

总结

  1. split() 的参数是正则表达式,分割特殊元字符(.、|、* 等)需要用 \\ 转义。
  2. limit 参数控制分割次数:正数限制长度、0 忽略末尾空、负数保留所有空字符串。
  3. 处理连续分隔符时会产生空字符串,可通过 filter() 过滤,或根据需求选择 limit 取值。

posted on 2025-12-26 08:57  coding博客  阅读(1)  评论(0)    收藏  举报