[英]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”。 該代碼不適用於規格更改。
這就是我要做的。
- 創建一個EditText列表,例如textList
- 遍歷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.