用Java构建带分隔符的字符串的最佳方法是什么?

在Java应用程序中工作时,最近我需要汇编一个用逗号分隔的值列表,以传递到另一个Web服务,而无需事先知道会有多少个元素。我能想到的最好的方法是这样的:

public String appendWithDelimiter( String original, String addition, String delimiter ) {

if ( original.equals( "" ) ) {

return addition;

} else {

return original + delimiter + addition;

}

}

String parameterString = "";

if ( condition ) parameterString = appendWithDelimiter( parameterString, "elementName", "," );

if ( anotherCondition ) parameterString = appendWithDelimiter( parameterString, "anotherElementName", "," );

我意识到这并不是特别有效,因为到处都是在创建字符串,但是我要澄清的不仅仅是优化。

在Ruby中,我可以做这样的事情,感觉更优雅:

parameterArray = [];

parameterArray << "elementName" if condition;

parameterArray << "anotherElementName" if anotherCondition;

parameterString = parameterArray.join(",");

但是由于Java缺少join命令,所以我找不到任何等效的东西。

那么,用Java做到这一点的最佳方法是什么?

回答:

Apache的commons lang是你的朋友-它提供了一种与Ruby中所引用的方法非常相似的join方法:

StringUtils.join(java.lang.Iterable,char)

Java 8通过StringJoiner和提供了开箱即用的连接String.join()。下面的代码片段显示了如何使用它们:

StringJoiner

StringJoiner joiner = new StringJoiner(",");

joiner.add("01").add("02").add("03");

String joinedString = joiner.toString(); // "01,02,03"

String.join(CharSequence delimiter, CharSequence... elements))

String joinedString = String.join(" - ", "04", "05", "06"); // "04 - 05 - 06"

String.join(CharSequence delimiter, Iterable<? extends CharSequence> elements)

List<String> strings = new LinkedList<>();

strings.add("Java");strings.add("is");

strings.add("cool");

String message = String.join(" ", strings);

//message returned is: "Java is cool"

以上是 用Java构建带分隔符的字符串的最佳方法是什么? 的全部内容, 来源链接: utcz.com/qa/425857.html

回到顶部