我指的是用中间的某个String连接String,比如用句点连接句子,或者用逗号连接参数列表。我知道你可以使用库,但有时这些库不能做你想要做的事情,比如当你想要生成你正在连接的短语时。到目前为止,我已经想出了两个解决方案,
StringBuffer sentence = new StringBuffer();
String period = "";
for ( int i = 0; i < sentences.length; i++ ) {
sentence.append( period + sentences[i] );
period = ". ";
}它受到period的冗余重新分配的影响。还有
StringBuffer actualParameters = new StringBuffer();
actualParameters.append( parameters[0] );
for ( int i = 1; i < parameters.length; i++ ) {
actualParameters.append( ", " + parameters[i] );
}这删除了重新分配,但看起来仍然没有吸引力。任何其他的解决方案都是非常感谢的。
发布于 2011-07-28 18:39:26
有一个family of functions in Apache Commons Lang that does just that。
如果你必须自己编写代码,我通常会这样做:
StringBuilder sb = new StringBuilder();
for (String sentence : sentences) {
if (sb.length() != 0) {
sb.append(". ");
}
sb.append(sentence);
}这个版本允许sentences是任何可迭代的(返回字符串)。还要注意使用StringBuilder而不是StringBuffer。
很容易将其概括为类似于org.apache.commons.lang.StringUtils.join的东西。
发布于 2011-07-28 18:42:21
这似乎是一个常见的问题!
Remove last character of a StringBuilder?
这将导致类似这样的结果:
StringBuffer sentence = new StringBuffer();
String separator = ", ";
for ( int i = 0; i < sentences.length; i++ ) {
sentence.append( sentences[i] )
sentence.append( separator );
}
sentence.setLength(sentence.length() - separator.length());发布于 2011-07-28 20:24:57
如果您至少有一个字符串,则:
String join(String separator, String... strings)
{
String s = strings[0];
for (int i = 1; i < strings.length; i++) {
s += separator + strings[i];
}
return s;
}https://stackoverflow.com/questions/6857502
复制相似问题