split()分割字符串时,分隔符右侧为空时报ArrayIndexOutOfBoundsException的问题

1.使用split()方法分割里字符串,例如,使用">"分割字符串,具体用法如下代码所示:

package com.imooc.day01;

public class SplitDemo {
	public static void main(String[] args) {
		String user = "mxq>123456";
		String username = user.split(">")[0];
		String password = user.split(">")[1];

		System.out.println(username); // mxq
		System.out.println(password); // aa123456
	}
}

2.现在将">"右侧的子字符串删掉,只保留">"左侧的子字符串,然后使用">"分割字符串时,代码如下所示:

package com.imooc.day01;

public class SplitDemo {
	public static void main(String[] args) {
		String user = "mxq>";
		String username = user.split(">")[0];
		String password = user.split(">")[1];

		System.out.println(username);
		System.out.println(password);
	}
}

会报异常:ArrayIndexOutOfBoundsException,如下所示:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at com.imooc.day01.SplitDemo.main(SplitDemo.java:7)

主要是因为">"右侧为空时,不会进行分割!

现在我们将字符串转换成集合,然后打印出集合可以看到该集合中只有1个元素,所以在执行user.split(">")[1]时会报数组越界异常,代码如下所示:

package com.imooc.day01;

import java.util.Arrays;
import java.util.List;

public class SplitDemo {
	public static void main(String[] args) {
		String user = "mxq>";
		// 将字符串转换成集合,并打印出该集合,以及该集合的长度
		List<String> list = Arrays.asList(user.split(">"));
		System.out.println(list);
		System.out.println(list.size());
		String username = user.split(">")[0];
		String password = user.split(">")[1];

		System.out.println(username);
		System.out.println(password);
	}
}

结果如下所示:

[mxq]
1
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at com.imooc.day01.SplitDemo.main(SplitDemo.java:14)

若想将">"分隔符右侧的空打印出来,可以添加一个参数-1,-1表示返回所有的子字符串,具体用法如下所示:

package com.imooc.day01;

import java.util.Arrays;
import java.util.List;

public class SplitDemo {
	public static void main(String[] args) {
		String user = "mxq>";
		// 将字符串转换成集合,并打印出该集合,以及该集合的长度
		List<String> list = Arrays.asList(user.split(">", -1));
		System.out.println(list);
		System.out.println(list.size());
		String username = user.split(">")[0];
		String password = user.split(">")[1];

		System.out.println(username);
		System.out.println(password);
	}
}

结果如下所示:

[mxq, ]
2
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 1
	at com.imooc.day01.SplitDemo.main(SplitDemo.java:14)

 


版权声明:本文为weixin_44679832原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。