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

本文记录了在Java编程时遇到的字符串截取错误,即ArrayIndexOutOfBoundsException,以及解决这个问题的方法。通过先检查截取的子字符串数组长度,避免直接访问不存在的数组元素,可以有效防止此类异常。示例代码展示了使用集合和数组两种方式检查长度,并给出正确的运行结果。此外,文章还解析了`Arrays.asList()`方法的源码,加深理解。

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

	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、付费专栏及课程。

余额充值