簡體   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