split方法的理解

split()方法

​ 对于split()方法我们先来看看API中如何解释的:

split() 根据给定正则表达式的匹配拆分此字符串

 String arr="a!b!c";
        String [] arr1=arr.split("!");
        System.out.println(Arrays.toString(arr1));
        System.out.println(arr1.length);
//返回的数组为[a, b, c] 很明显去掉了给定的"!"

这是一个最常用的方式;今天看了一下原码,有了新的感悟;

我们最常用的方法其实是split中的重载方法

public String[] split(String regex) {
        return split(regex, 0);
    }
//这个方法将原来方法中的另一个参数 int limit设置为0

我们再看看原来的两个参数的split方法

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

很多人对第二个参数是陌生的,我们来看看这个两个参数都是什么意思

参数解释

1.regex(正则表达式)

根据输入的字符(元素)截取字符串;

如果表达式不匹配任何内容就返回原字符串(空字符串也是一个字符串);

2.limit

控制匹配次数

看看不同limit参数下的不同情况

2.1 limit=-1

String arr="!a!bc!def!!";
        String [] arr1=arr.split("!",-1);
        System.out.println(Arrays.toString(arr1));
        System.out.println(arr1.length);
//[, a, bc, def, , ] 长度为6
//说明头部和尾部的!没有被忽略

2.2 limit=0

String arr="!a!bc!def!!";
        String [] arr1=arr.split("!",0);
        System.out.println(Arrays.toString(arr1));
        System.out.println(arr1.length);
//[, a, bc, def] 长度为4
//说明忽略了尾部的! 头部不忽略

2.3 limit=2

String arr="!a!bc!def!!";
        String [] arr1=arr.split("!",2);
        System.out.println(Arrays.toString(arr1));
        System.out.println(arr1.length);
//[, a!bc!def!!] 长度为2
//总长度被限制成两个 (注意第一个感叹号开始分)

2.4 limit=100

String arr="!a!bc!def!!";
        String [] arr1=arr.split("!",100);
        System.out.println(Arrays.toString(arr1));
        System.out.println(arr1.length);
//[, a, bc, def, , ] 长度为6
//说明当limit大于0,并且远大于应该有的长度时,头部和尾部的逗号都没有被忽略

创作不易,大佬们留步… 动起可爱的双手,来个赞再走呗 (๑◕ܫ←๑)

你可能感兴趣的:(字符串,正则表达式)