2016-01-23 193 views
1

我有多個String [],其中一些以逗號開頭。我如何在所有數組的循環中刪除這個逗號。在Java字符串數組的開頭刪除逗號

結果:

[,a,b,c,d] 
[e,f,g,h,i] 
[,j,k,l,m,n] 
[w,x,y,z] 

代碼:

 HashMap<String, String[]> newHashMap = new HashMap(); 
     String[] baseVectorArray; 
     for (String name : externalMap.keySet()) { 
      if (!name.isEmpty()) { 
       StringBuilder bv = new StringBuilder(); 
       HashMap<String, List<String>> l = oldHashMap.get(name); 
       List<String> list_of_names; 
       for (String id : l.keySet()) { 
        list_of_authors = l.get(id); 
        for (String s : list_of_names) { 
         bv.append(s); 
         bv.append(", "); 
        } 
       } 
       bv.deleteCharAt(bv.lastIndexOf(",")); 
       String bvs = bv.toString(); 
       String[] bva = bvs.split(","); 

       System.out.println(Arrays.toString(bva)); 
       newHashMap.put(name, bva); 
      } 
     } 
+0

很酷,你的問題很有道理。但是你忘了發佈你的代碼。請編輯您的問題併發布您在嘗試自行解決此問題時編寫的代碼。 – Kon

+1

這個不清楚。你顯示的輸出是如何創建的?一個'String []'不包含逗號,它們是打印輸出的一部分,在這種情況下,你正在處理'String []'中的空字符串元素,而不是前導逗號。或者你可以看字符串值而不是'String []'。我們不知道。你可以添加在你的問題中產生輸出的代碼嗎? –

+0

感謝您的回覆。我發佈了我的代碼。 – Deksterious

回答

0

可能的解決方案:

for (String s : list_of_names) { 
    bv.append(s.startsWith(',') ? s.substring(1) : s); 
    bv.append(", "); 
} 

基本上我們正在檢查是否有逗號開始。如果是的話,我們忽略它。

如果您使用的是Java 8,也許你應該重構代碼以拉姆達加入:

String bv = list_of_names.stream() 
.map(s -> s.startswith(",") ? s.substring(1) : s) 
.collect(Collectors.joining(", ")); 
在這種情況下

,這是沒有必要:bv.deleteCharAt(bv.lastIndexOf(","));

0
String[] array = {"", "a", "b", "c", "d"}; 

List<String> list = new ArrayList<>(Arrays.asList(array)); 
list.removeAll(Arrays.asList("", null)); 
array = list.toArray(new String[list.size()]); 

System.out.println(Arrays.toString(array)); 

輸出: a,b,c,d]