去除陣列中空值的那些小辦法
阿新 • • 發佈:2018-12-12
前言
由於引數傳遞,可能存在不規範行為,為了排除這種情況,需要對引數進行處理。本來以為簡單的轉換,卻發現中間有點點坑,而且在百度時發現,有的實現思路確實不錯,特此記錄。
程式碼的實現功能
將String to = ""1350***@163.com;;;;\"\";134***@163.com";"
轉換成String[] array = ["135***@163.com,134***@163.com";]
,去除中間的空值與""
具體程式碼
1.利用StringBuffer
遍歷string[],先將不為空的值拼接成String,再利用split()方法
String[] aa = to.split(";"); //用StringBuffer來存放陣列中的非空元素,用“;”分隔 StringBuffer sb = new StringBuffer(); for(int i=0; i<aa.length; i++) { if("".equals(aa[i])) { continue; } sb.append(aa[i]); if(i != aa.length - 1) { sb.append(";"); } } //用String的split方法分割,得到陣列 aa = sb.toString().split(";");
2.利用List
遍歷string[],先將不為空的值放入list集合中,再利用toArray()方法
String[] aa = to.split(";"); List<String> tmp = new ArrayList<String>(); for(String str:aa){ if(str!=null && str.length()!=0){ tmp.add(str); } } aa = tmp.toArray(new String[0]);
3.利用List的迭代器(比較麻煩)
先轉換為list,再遍歷List去重空值 ,在利用toArray()方法轉為String[]
String[] toEmailArray = to.split(";"); List<String> toEmailList = new ArrayList( Arrays.asList(toEmailArray));;//1.將內部類的array變成util的array Iterator<String> iterator = toEmailList.iterator(); while(iterator.hasNext()){ String str = iterator.next(); if (!Detect.notEmpty(str) || ("\"\"").equals(str)) { iterator.remove(); //2.注意這個地方 } } toEmailArray = toEmailList.toArray(new String[0]); //將list轉為string[] //或者 toEmailArray = toEmailList.toArray(new String[toEmailList.size()]); }