繁体   English   中英

Java Android-如何使用内部的空数据拆分字符串数据

[英]Java android - How to split string data with empty data inside of it

我有一个数据字符串名称stringSplit,我想分成5部分。

我用它来分割字符串:

String[] pisah = stringSplit.split(",", -1);
for (int i=0;i< pisah.length;i++) {
   String hasil1 = pisah[0];
   String hasil2 = pisah[1];
   String hasil3 = pisah[2];
   String hasil4 = pisah[3];
   String hasil5 = pisah[4];
}

当stringSplit中的值有5个数据(例如:“ data1,data2,data3,data4,data5”)时,代码工作正常。 但是,当stringSplit中只有一个,两个或三个数据时,将捕获一个异常:

(f.e: java.lang.ArrayIndexOutOfBoundsException: length=4; index=4).

我的问题是如何处理空字符串? 因此,即使只有一个,两个或三个数据,stringSplit仍然可以拆分。

我试图通过将限制添加到-1来解决,该解决方案是我从另一篇文章中获得的,但仍然对我不起作用。

编辑:

我几乎忘记了,结果字符串(hasil1-hasil5)将用于edittext。

fe:editText1.setText(hasil1);

和别的。

这是问题所在

for (int i=0;i< pisah.length;i++) {
   String hasil1 = pisah[0];
   String hasil2 = pisah[1];
   String hasil3 = pisah[2];
   String hasil4 = pisah[4];
   String hasil5 = pisah[5];
}

但这会遍历列表,并在每次循环时从0-5获取列表中的值,因此您应该执行的操作是这样的

for(int i = 0; i < 6; i++){
    if(i >= pisah.length()) break;  
    String hasilI = pisah[i];
}

这会遍历列表6次,然后如果列表的大小<6,则会跳出循环

一种可能的解决方案是检查您要查找的索引是否小于数组的长度。 如果该索引小于数组的大小,则肯定存在。

for (int i=0;i< pisah.length;i++) {
  if(0 < pisah.length)
     String hasil1 = pisah[0];
  if(1 < pisah.length)
     String hasil2 = pisah[1];
  //similarly for all other idexes that you want the value for.
}

使用此代码:

 String res[] = new String[5];

String[] pisah = stringSplit.split(",");

for (int i=0;i< pisah.length && i < res.length;i++) {
  res[i] = pisah[i];
}

if(res[0] != null )
  //.......... res[0] valid 

if(res[1] != null )
  //.......... res[1] valid 

if(res[2] != null )
  //.......... res[2] valid 

if(res[3] != null )
  //.......... res[3] valid 

if(res[4] != null )
  //.......... res[4] valid 

您已经硬编码了可以拥有的EditText字段的数量! 如果需求发生变化,您必须在其中添加另一个字段怎么办? 那将需要您在很多地方添加“ editText6”和“ hasil6”。 该代码不适用于规格更改。

这就是我要做的。

  1. 创建一个EditText列表,例如textList
  2. 遍历pisah数组,并同时进行textist操作,然后将pisah中索引i处的String添加到textList中索引i处的EditText对象。

这样,在只有3个数据值的情况下,您将自动处理仅填充3个EditText对象的情况。

这是代码:

List<EditText> textList;
String[] pisah = stringSplit.split(",", -1);
for (int i=0;i< pisah.length;i++) {
           textList.get(i).setTest(pisah[i]);
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM