2016-01-23 195 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]