在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", "," );
Run Code Online (Sandbox Code Playgroud)
我意识到这不是特别有效,因为在整个地方都会创建字符串,但我的目的是为了清晰而不是优化.
在Ruby中,我可以做这样的事情,感觉更优雅:
parameterArray = [];
parameterArray << "elementName" if condition;
parameterArray << "anotherElementName" if anotherCondition;
parameterString = parameterArray.join(",");
Run Code Online (Sandbox Code Playgroud)
但由于Java缺少连接命令,我无法弄清楚任何等价物.
那么,在Java中执行此操作的最佳方法是什么?
连接String对象列表的最佳方法是什么?我想这样做:
List<String> sList = new ArrayList<String>();
// add elements
if (sList != null)
{
String listString = sList.toString();
listString = listString.subString(1, listString.length() - 1);
}
Run Code Online (Sandbox Code Playgroud)
我不知何故发现这比使用StringBuilder/StringBuffer方法更整洁.
有什么想法/意见吗?
我有以下内容
data.AppendFormat("{0},",dataToAppend);
Run Code Online (Sandbox Code Playgroud)
这个问题是我在循环中使用它并且会有一个试用逗号.删除尾随逗号的最佳方法是什么?
我是否必须将数据更改为子串的字符串呢?
我正在寻找一种有效的方法来获取从多个字符串中提取的字符串标记列表(例如,使用空格分隔符).
例:
String s1 = "My mom cook everyday";
String s2 = "I eat everyday";
String s3 = "Am I fat?";
LinkedList<String> tokens = new LinkedList<String>();
//any code to efficiently get the tokens
//final result is tokens make of a list of the following tokens:
//"My", "mom", "cook", "everyday", "I", "eat", "everyday", "Am", "I", "fat?".
Run Code Online (Sandbox Code Playgroud)
现在
LinkedList是最有效的集合类(Apache Commons,Guava,他们可以帮忙吗?)!StringUtils从Apache Commons 使用,但该split方法返回一个数组!所以,我应该从一个for循环中提取由split返回的String对象数组中的字符串.这是有效的:我不知道,split创建一个阵列!Splitter从番石榴那里读到了,但这篇文章指出StringUtils在实践中更好.Scanner从Java.util …我有以下代码:
foreach (var node in nodes)
{
result += node.InnerText;
}
Run Code Online (Sandbox Code Playgroud)
该InnerText仅仅是1-2个字符,永远不会包含#符号。节点中可以有一个或多个node值。
我如何分隔每个元素,例如,如果这些是node的值:
"ab" and "cd"
Run Code Online (Sandbox Code Playgroud)
结果将是ab#cd。
我知道我可以添加#值,但是最后一个字符呢。如果我只是简单地添加,#那么我会得到ab#cd#不是我想要的。