Java 学习笔记

所有文章
📖 最新文章 transmittable-thread-local 库 JOOR 反射库 Lombok 库:为你减少样板代码 Slf4j 日志组件的使用 加速maven、gradle依赖下载
📖 Java 基础 安装 第一个程序 使用 UTF-8 编写代码 空值 null 正则表达式 线程 日期/时间 匿名类 枚举 ThreadLocal 线程本地变量 动态代理 jar 命令

Java : 使用 String 的 split 函数拆分字符串


Java 的字符串类 String 自带了一个 split 方法可以拆分字符串。

函数原型:

String[] split(String regex);
String[] split(String regex, int limit);

第一个参数regex正则表达式,第2个split函数的 limit 参数代表最多拆分成几个字符串。limit小于等于0时代表尽可能的拆分。

下面用一个表格快速说明下:

字符串 regex limit 拆分结果
你好,世界 0 你好世界
你好,中国,世界 我们 0 你好,中国,世界
你好,中国,世界 中国 0 你好,,世界
你好,中国,世界 0 你好中国世界
你好,中国,世界 2 你好中国,世界
你好.中国 . 0 拆分结果为空
你好.中国 \\. 0 你好中国

示例1:

public class StringTest {

    public static void main(String[] args) {
        String data = "你好,世界";
        String[] splitResult = data.split(",");
        System.out.println(splitResult.length);
        System.out.println(splitResult[0]);
        System.out.println(splitResult[1]);
    }

}

执行结果:

2
你好
世界

示例2:

public class StringTest {

    public static void main(String[] args) {
        print("你好,中国,世界".split("我们"));    // {"你好,中国,世界"}
        print("你好,中国,世界".split("中国"));    // {"你好,", ",世界"}
        print("你好,中国,世界".split(","));      // {"你好", "中国", "世界"}
        print("你好,中国,世界".split(",", 2));   // {"你好", "中国,世界"}
    }

    static void print(String[] arr) {
        if (arr == null || arr.length == 0) {
            System.out.println("{}");
            return;
        }
        String s = "{";
        for (int i=0; i < arr.length-1; i++) {
            s = String.format("%s\"%s\", ", s, arr[i]);
        }
        s = String.format("%s\"%s\"}", s, arr[arr.length-1]);
        System.out.println(s);
    }

}

执行结果:

{"你好,中国,世界"}
{"你好,", ",世界"}
{"你好", "中国", "世界"}
{"你好", "中国,世界"}

示例3

因为split 的第一个参数 regex 是正则表达式,所以一定要注意正则表达式的关键词是不能直接用来拆分字符串的。 例如在正则表达式中.是一个关键字符,要想将字符串按照.拆分,需要写成\\.

public class StringTest {

    public static void main(String[] args) {
        print("你好.中国".split("."));              // {}
        print("你好.中国".split("\\."));            // {"你好", "中国"}
        print("你好.中国.世界".split("\\."));        // {"你好", "中国", "世界"}
        print("你好.中国.世界".split("\\.中国"));    // {"你好", ".世界"}
    }

    static void print(String[] arr) {
        if (arr == null || arr.length == 0) {
            System.out.println("{}");
            return;
        }
        String s = "{";
        for (int i=0; i < arr.length-1; i++) {
            s = String.format("%s\"%s\", ", s, arr[i]);
        }
        s = String.format("%s\"%s\"}", s, arr[arr.length-1]);
        System.out.println(s);
    }

}

执行结果:

{}
{"你好", "中国"}
{"你好", "中国", "世界"}
{"你好", ".世界"}

( 本文完 )

文章目录