ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

java – Fencepost问题的优雅解决方案(使用字符串)

2019-09-03 04:02:41  阅读:198  来源: 互联网

标签:java string-formatting string-concatenation 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有