java split后的某个字符串是否存在报(Exception in thread “main“ java.lang.ArrayIndexOutOfBoundsException: 2)的解决方法

今天在编写代码时,截取字符串时报错。

	String ss = "xx_yy";
	if (StringUtils.isNotBlank(ss.split("_")[2]){
    	System.out.println(1);
    } else {
		System.out.println(2);
	}
	运行结果:
	Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2

经过搜索各路大神的解决方法,终于发现了一种解决方法:将截取后的字符串放入 数组或集合,然后再根据 数组或集合的长度,来进行判断被截取字符串是否存在。


	集合篇:
	
	String ss = "xx_yy";
	List<String> list = Arrays.asList(ss.split("_"));
	if (list > 2){
		if (StringUtils.isNotBlank(ss.split("_")[2]){
			System.out.println(1);
		} else {
			System.out.println(2);
		}
	} else {
		System.out.println(3);
	}
	运行结果:
	3

	数组篇:
	
	String ss = "xx_yy";
	String[] s = ss.split("_");
	if (s.length > 2){
		if (StringUtils.isNotBlank(s[2]){
			System.out.println(1);
		} else {
			System.out.println(2);
		}
	} else {
		System.out.println(3);
	}
	运行结果:
	3

其中集合篇的方法也是利用数组转换成集合再进行判断的:


	集合篇Arrays.asList()方法源码:
	
	public staic <T> List<T> asList(T... a) {
		return new ArrayList<>(a);
	}
	private static class ArrayList<E> extends ... {
		...
		private final E[] a;
		
		ArrayList(E[] array) {
			a = Objects.requireNonNull(array);
		}
		...
	}
	public static <T> T requireNonNull(T obj) {
		if (obj == null)
			throw new NullPointerException();
		return obj;
	}

以上是总结方法,作为笔记,以此记录。
如果还有更好的解决方法,还请各位大佬动手留言。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值