java - 栅栏柱问题的优雅解决方案(带字符串)

标签 java string-formatting string-concatenation fencepost

我指的是把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] );
}

它删除了重新分配,但看起来仍然没有吸引力。非常感谢任何其他解决方案。

最佳答案

有一个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 的内容。

关于java - 栅栏柱问题的优雅解决方案(带字符串),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6857502/

相关文章:

java - 我在 HashMap 中使用 HashMap,但我也需要使用 ArrayList 作为值。我无法提供值(value)

pandas - 如何动态连接多个列,其中列名存储为分隔字符串 Pandas

c++ - 如何将 char 和 char* 附加到现有字符串?

java - 防止 JavaFX 窗口窃取焦点

java - Android ACTION_MOVE图像设置图像滚动范围超出其父级

c# - 是否可以使用当前文化设置格式化数字但将 0 显示为空白?

python - 对字符串 : are there any caveats? 使用 locals() 和 format() 方法

python - 遍历 python 列表和字符串格式

sql - 更新SQL语法-通过串联将字段重置为其自身-SQLServer 2005

java - 识别文本文件中的 "figure"模式