java – Fencepost问题的优雅解决方案(使用字符串)
作者:互联网
我所指的是将Strings与中间的某个字符串连接起来,例如连接句点分隔的句子,或带逗号的参数列表.我知道你可以使用库,但有时这些不能做你想要的,就像你想要生成你正在连接的短语.到目前为止,我已经提出了两个解决方案,
StringBuffer sentence = new StringBuffer();
String period = "";
for ( int i = 0; i < sentences.length; i++ ) {
sentence.append( period + sentences[i] );
period = ". ";
}
它受到多余的时期重新分配的影响.还有
StringBuffer actualParameters = new StringBuffer();
actualParameters.append( parameters[0] );
for ( int i = 1; i < parameters.length; i++ ) {
actualParameters.append( ", " + parameters[i] );
}
这删除了重新分配,但仍然看起来没有吸引力.非常感谢任何其他解决方案.
解决方法:
有一个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);
}
这个版本允许句子是任何可迭代的(返回字符串).另请注意使用StringBuilder而不是StringBuffer.
很容易将其概括为类似于org.apache.commons.lang.StringUtils.join的东西.
标签:java,string-formatting,string-concatenation,fencepost 来源: https://codeday.me/bug/20190903/1795593.html