假設你有已創建後.split()
然後使你有一大堆的空字符串在裏面,即的java:刪除元素從後陣.split()
myArray['','hello','thetimes','economist','','','hi']
一個String[]
是否有一個方式從String[]
刪除他們而不必循環,檢測字符串是否爲空然後添加到新的數組?
假設你有已創建後.split()
然後使你有一大堆的空字符串在裏面,即的java:刪除元素從後陣.split()
myArray['','hello','thetimes','economist','','','hi']
一個String[]
是否有一個方式從String[]
刪除他們而不必循環,檢測字符串是否爲空然後添加到新的數組?
有一種方法以從 字符串[]刪除它們,而無需循環圓形, 檢測是否字符串是空的,則 添加到新的數組?
編號數組具有固定長度。
這裏有一個更簡單的方法。
String.split("\\s+")
將消除這些空字符串。
將它轉換爲List
可能是最簡單的,遍歷它併除去空的元素,例如
List<String> parts = new LinkedList<String>(string.split(pattern));
for (Iterator<String> it = parts.iterator();
it.hasNext();
) {
if (it.next().isEmpty()) {
it.remove();
}
}
return parts.toArray(new String[parts.size()]);
拆分後不會有空字符串! – fastcodejava 2010-02-04 15:10:51
String[] parts = string.split("\\s*" + splitString + "\\s*");
凡splitString
是你原本分裂的字符串。
這擴展了拆分字符串,將任意的空格數加到它上面,以便它們作爲拆分器的一部分實現,而不是作爲結果數組的一部分。
真正的問題是在你正在做分割的正則表達式字符串中。看看here列表中的特殊符號添加像其他人一樣建議,如\\s
。
如果您想要學習比正則表達式更簡單的路線,您可以遍歷數組並將每個非空字符串添加到ArrayList<String>
,然後將其更改回固定大小的數組。
沒有簡單的方法從陣列中刪除元素。你可以做replaceAll()
,然後撥打split
或撥打split("\\s+")
多個空間。
該解決方案僅解決問題的一部分 - 只刪除尾隨的空字符串。 我用:
String st = "a,b,c,,d,,f,,,";
List<String> list = Arrays.asList(st.split("\\s*,\\s*"));
while (list.remove(""));
這裏是正確的魔道:
String str = "1, 2,3 4,, , ,5,,6, ,";
String arr[] = str.split("(\\s*,\\s*)+");
輸出的例子會很有幫助。 – Trevor 2014-10-10 20:55:36
你不能調用'.split()'在'的String []'。我已經將我的數組拆分爲某個字符串,例如'String [] hello = someString.split('abc');',我不能在''hello []''上執行'.split() 。或者..也許我誤解了你? – Federer 2010-02-04 14:41:54
@theEconomist:不,你調用'String'本身的'.split()'。正則表達式參數指示要分割的模式。我命名的特定模式匹配「一個或多個空白字符」,這消除了結果數組中的空字符串。 – danben 2010-02-04 15:23:22
@theEconomist:另外,如果你正在分裂多於空白,你可以擴展你的正則表達式來包含周圍的空白。例如'someString。split('abc')'會變成'someString.split(\\ s * abc \\ s *)'。 – danben 2010-02-04 15:26:50