2013-10-10 14 views
0

我有以下的Java代碼:如何在不使用複雜代碼結構的情況下連接Java中的字符串?

String strTest = null; 

for (AlternativeEntity alternativeEntity : msg.Guidance() 
     .getAlternatives()) { 

    strTest = strTest + alternativeEntity.getArrivalStation().getName() + ", "; 

} 

輸出看起來是這樣的:

nullabc, xyz, oop, 

我該如何解決這個問題,很不好字符格式?這將是巨大的,如果我可以這樣創建輸出:

abc, xyz, oop 
+3

你可以使用像番石榴一樣的圖書館。請參閱http://stackoverflow.com/questions/1751844/java-convert-liststring-to-a-joind-string –

+0

您應該使用StringBuilder進行此操作,也不要使用String。 –

回答

3

初始化strTest爲:

String strTest = ""; 

此外,刪除最後一個逗號,

strTest=strTest.substring(0, strTest.length()-1); 
+0

或使用番石榴,它可以在一條線上爲你做所有的東西。 :) –

0

替換字符串strTest = NULL;通過字符串strTest =「」;

0

變化

String strTest = null; 

String strTest = ""; 
0

你爲什麼不使用:

String strTest = ""; 

,並在年底:

if(strTest.endsWith(", ")) 
    strTest = strTest.substring(0, strTest.length()-2); 
3

您可以使用GuavaJoiner#join(Iterable parts)。例如:

Joiner joiner = Joiner.on(", ").skipNulls(); 
String result = joiner.join(list); 
System.out.println(result); 

在這裏,該列表中的所有元素將被打印逗號分隔而不任何尾隨逗號。此外,所有的null元素將被跳過。

更多信息:

+0

這就是我想要回答的。 +1 –

+0

有一個單獨的圖書館只是爲了聯合在一起看起來像一個矯枉過正的行。另外,如果我們要使用庫,是否有理由使用Guava而不是[commons-lang](http://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/ lang3/StringUtils.html#加盟%28java.lang.Iterable,%20java.lang.String 29%)? 'StringUtils.join(list,「,」);'似乎比這個例子更簡單。 – eis

+0

我沒有說番石榴是最好的。這只是一個選項。此外,我會說使用番石榴是一個矯枉過正的 - 它只是一個實用程序庫。 :) –

3

你的初始化字符串 「」:

String strTest = ""; 

另外,你應該使用StringBuilder:

StringBuilder builder = new StringBuilder(); 

for (AlternativeEntity alternativeEntity : msg.Guidance() 
    .getAlternatives()) { 

    builder.append(alternativeEntity.getArrivalStation().getName()).append(", "); 

} 

這會產生更好的性能。

+0

爲什麼樣板?爲什麼你不使用番石榴。 –

+0

同時刪除循環後的最後一個','。你的答案是最好的,但沒有人注意那個細節。 – dic19

+0

也許還包括關於刪除尾部的「」,「」。 – christopher

0

初始化String strTest="";

跳過最後一個逗號 '' 使用外For循環:

strTest = strTest.substring(0,strTest.trim().length()-1); 
1

的Java只爲這個目的提供了StringBuilder類,其簡單易用的..

StringBuilder str = new StringBuilder("India "); 

    //to append "Hi" 
    str.append("Hi"); 

    // print the whole string 
    System.out.println("The string is "+str) 

輸出將是:字符串是印度Hi

click here to know more about StringBuilder class

0
String strTest = null; 

for (AlternativeEntity alternativeEntity : msg.Guidance().getAlternatives()) { 
    String name = alternativeEntity.getArrivalStation().getName(); 
    strTest = (strTest == null) ? name : strTest + ", " + name; 
} 

如果列表很長,你應該使用一個StringBuilder而不是StringstrTest因爲上面的代碼在每次迭代時都會創建一個新的字符串:太多的複製。

相關問題