将多个字符串组合成一个JAVA

use*_*881 7 java string concatenation

我有一组strings想要组合成一个String所有用昏迷分隔的句子(*.csv)

以下是它与我的关系:

String dataContainer;

for(String tempString:setInput){
     String finalString = "," + tempString + "," ;   
}
Run Code Online (Sandbox Code Playgroud)

这不适合我:(
但它应该为Set ex做:

Set<String> setInput = new TreeSet();
setInput.add("Dog");
setInput.add("Cat");
setInput.add("Mouse");
Run Code Online (Sandbox Code Playgroud)

生成字符串:

,Dog,,Cat,,Mouse,
Run Code Online (Sandbox Code Playgroud)

Ruc*_*era 17

最好使用 StringBuilder

 StringBuilder sb= new StringBuilder();

for(String tempString:setInput){
   sb.append(",").append(tempString).append(",");   
 }
Run Code Online (Sandbox Code Playgroud)

  • 甚至`sb.append(",").append(tempString).append(",");` (5认同)
  • +1你可以使用`sb.deleteCharAt删除最后插入的逗号(sb.lastIndexOf(","));`如果没有必要的话 (2认同)

Sur*_*tta 6

intializing每次都在做 结果字符串.

实际上,你想做

String finalString ="";
for(String tempString:setInput){
      finalString += "," + tempString + "," ;   
}
Run Code Online (Sandbox Code Playgroud)

但上述方法会导致多次String创作.

但我建议去StringBuilder.

 StringBuilder finalStringb =new StringBuilder();
    for(String tempString:setInput){
          finalStringb.append(",").append(tempString).append(",") ;   
    }

String finalS = finalStringb.toString();
Run Code Online (Sandbox Code Playgroud)


小智 6

或者我们可以使用Java 8 Stream

String joined = Stream.of("A", "B", "C").collect(Collectors.joining("delimiter", "prefix", "suffix"));
Run Code Online (Sandbox Code Playgroud)

要么

Directly Use StringJoiner class
Run Code Online (Sandbox Code Playgroud)

要么

new StringBuilder().add("A").add("B").toString()
Run Code Online (Sandbox Code Playgroud)

等等