我有一组strings
想要合并为一个String
,所有句子都用逗号分隔,例如(*.csv)
以下是我的观点:
String dataContainer;
for(String tempString:setInput){
String finalString = "," + tempString + "," ;
}
这对我不起作用:(
但它应该适用于Set ex:
Set<String> setInput = new TreeSet();
setInput.add("Dog");
setInput.add("Cat");
setInput.add("Mouse");
生成字符串:
,Dog,,Cat,,Mouse,
答案 0 :(得分:17)
最好使用StringBuilder
StringBuilder sb= new StringBuilder();
for(String tempString:setInput){
sb.append(",").append(tempString).append(",");
}
答案 1 :(得分:6)
您每次执行的结果字符串都是intializing
。
实际上,你想做
String finalString ="";
for(String tempString:setInput){
finalString += "," + tempString + "," ;
}
但上述方法会导致多个String
创作。
但我建议去StringBuilder
。
StringBuilder finalStringb =new StringBuilder();
for(String tempString:setInput){
finalStringb.append(",").append(tempString).append(",") ;
}
String finalS = finalStringb.toString();
答案 2 :(得分:5)
或者我们可以使用Java 8 Stream
String joined = Stream.of("A", "B", "C").collect(Collectors.joining("delimiter", "prefix", "suffix"));
或者
Directly Use StringJoiner class
或
new StringBuilder().add("A").add("B").toString()
等
答案 3 :(得分:2)
或者,如果您使用的是Java 8,则可以尝试以下方法:
public static String join(final Set<String> set){
return new StringBuilder(",").append(set.stream().collect(Collectors.joining(",,"))).append(",").toString();
}
public static void main(String args[]){
Set<String> setInput = new TreeSet<>();
setInput.add("Dog");
setInput.add("Cat");
setInput.add("Mouse");
System.out.println(join(setInput));
}
输出结果为:
,Cat,,Dog,,Mouse,
虽然,我有点不确定你为什么要在每个元素和开头和结尾的逗号之间使用2个逗号。如果您只想要一个逗号分隔每个元素(并且在开头或结尾没有逗号),请将join(Set<String>)
修改为如下所示:
public static String join(final Set<String> set){
return set.stream().collect(Collectors.joining(",")); //change "," to ", " for spacing
}
执行此操作后,新输出将为:
Cat,Dog,Mouse
答案 4 :(得分:2)
解决方案1 :(如果不需要定界符)
我建议使用concat(Object... objects)
中的org.assertj.core.util.String
。
public static String concat(Object... objects) {
return Arrays.isNullOrEmpty(objects) ? null : (String)java.util.Arrays.stream(objects).map(String::valueOf).collect(Collectors.joining());
}
您可以像这样使用它:
concat("string1", "string2", "string3", "string4");
使用StringJoiner(Java 8+)的解决方案2:
这来自java.util
。您甚至可以选择指定前缀和后缀。
StringJoiner stringJoiner = new StringJoiner(", ");
stringJoiner.add("string1");
stringJoiner.add("string2");
stringJoiner.add("string3");
assertEquals("string1, string2, string3", stringJoiner.toString());
使用Collectors.joining(Java 8+)的解决方案3:
这是Java 8 Stream API的功能。
List<String> stringList = Arrays.asList("string1", "string2", "string3");
String concatString = stringList.stream().collect(Collectors.joining(", "));
assertEquals("string1, string2, string3", concatString);
答案 5 :(得分:1)
org.apache.commons.lang.StringUtils.join()可以派上用场
答案 6 :(得分:1)