2015-10-15 141 views
-1

这里是我的一个字符串存储和从列表中读取代码:如何删除我的字符串中的额外逗号?

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 

for (String s : list) 
{ 
    listString += s + ", "; 
} 

System.out.println(listString); 

它是在结尾处添加额外的逗号,我怎么能删除,做的代码行的最低数量。请帮忙!

+0

到底会不会增加任何逗号。 –

+2

使用['StringJoiner'](https://docs.oracle.com/javase/8/docs/api/java/util/StringJoiner.html) – MadProgrammer

回答

3

的Java 8有一个不错的新StringJoiner类,只是为这个...

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 
StringJoiner sj = new StringJoiner(", "); 
for (String s : list) { 
    sj.add(s); 
} 
listString = sj.toString(); 
System.out.println(listString); 

如果你不够幸运,使用Java 8是哪些输出

one, two, three 

(我觉得你的痛苦),那么你可以使用StringBuilder,并从最后删除最后两个字符,如...

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 
StringBuilder sb = new StringBuilder(64); 
for (String s : list) { 
    sb.append(s).append(", "); 
} 
listString = sb.delete(sb.length() - 2, sb.length()).toString(); 
System.out.println(listString); 

现在,很明显,你应该检查,看看是否造成StringBuilder的长度足够长(有内容)做删除过,但我会离开,你;)

3

试试这个:

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

System.out.println(list.toString().replaceAll("\\]|\\[", "")); 

输出:

one, two, three 
+0

'System.out.println(list);'也给出相同的输出。 –

0
ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 

String listString = ""; 

for (String s : list) 
{ 
    listString += ", " + s; 
} 

System.out.println(listString.replaceFirst(",","")); 

您可以使用上面的代码。在开始处附加逗号,然后用空白字符串替换第一个逗号。

+0

我认为你应该用“”替换“”,否则在开始时会有额外的空间 –

2

作为StringJoiner和其他类的替代方法,您也可以使用第一个元素初始化listString,在下一个元素前添加逗号并在索引1处开始迭代。您不能再使用该foreach。

ArrayList<String> list = new ArrayList<String>(); 
list.add("one"); 
list.add("two"); 
list.add("three"); 
String listString = list.get(0); 

for (int i = 1;i<list.size();++i) { 
    listString += ", " + list.get(i); 
} 

System.out.println(listString); 
0

这是一个简单的解决方案。

if (list.endsWith(",")) { 
    list= list.substring(0, list.length() - 1); 
} 

希望它有效。

1

这工作:

listString = listString.substring(0, listString.length() - 2); 
System.out.println(listString); 
0

此前的Java 8:

StringBuilder listString = new StringBuilder(); 
for (String id : list){ 
     listString.append(id).append(","); 
} 
String result =listString.toString().replaceAll(",$", ""); 

正则表达式",$"是检测最后一个逗号。

使用Java 8:

list.stream().collect(Collectors.joining(",")); 
相关问题