Android Java:如何拆分含空内容的字符串?数据不足场景处理
解决字符串拆分后数组越界的问题
嘿,你遇到的问题核心是当拆分后的数组长度小于5时,直接访问索引4会抛出ArrayIndexOutOfBoundsException,而且你原来的for循环其实完全没必要——每次循环都重复给那5个变量赋值,最后只会保留最后一次循环的结果,完全是多余的操作。我给你几个实用的解决方案:
方案1:逐个检查数组长度,给不足的部分设默认值
这种方法最直观,直接判断数组是否有足够的元素,没有的话就用你想要的默认值(比如空字符串""或者null)填充:
String[] pisah = stringSplit.split(",", -1); // 按需设置默认值,这里用空字符串举例 String hasil1 = pisah.length >= 1 ? pisah[0] : ""; String hasil2 = pisah.length >= 2 ? pisah[1] : ""; String hasil3 = pisah.length >= 3 ? pisah[2] : ""; String hasil4 = pisah.length >= 4 ? pisah[3] : ""; String hasil5 = pisah.length >= 5 ? pisah[4] : "";
比如当stringSplit是"data1,data2"时,hasil3、hasil4、hasil5都会被设为"",不会触发数组越界。
方案2:用Arrays.copyOf固定数组长度
如果你希望数组长度强制为5,不足的位置自动补null,可以用java.util.Arrays的copyOf方法,之后再按需替换null为默认值:
import java.util.Arrays; // ... String[] pisah = stringSplit.split(",", -1); // 把数组拷贝成长度为5的新数组,不足的位置补null String[] fixedArray = Arrays.copyOf(pisah, 5); // 可选:把null替换成空字符串 for (int i = 0; i < fixedArray.length; i++) { if (fixedArray[i] == null) { fixedArray[i] = ""; } } // 现在可以安全访问索引0到4了 String hasil1 = fixedArray[0]; String hasil2 = fixedArray[1]; String hasil3 = fixedArray[2]; String hasil4 = fixedArray[3]; String hasil5 = fixedArray[4];
额外提醒
记得去掉原来的for循环哦,它不仅没用,还会浪费性能——不管数组有多长,它都会循环pisah.length次,每次都重复赋值那5个变量,完全没必要。
内容的提问来源于stack exchange,提问作者syukron hardianto
相关产品推荐
相关产品推荐

