已有StringBuilder实例时,如何用指定分隔符拼接字符串?
已有StringBuilder实例时如何用分隔符拼接,以及String.join无分隔符的原因
为什么你的代码输出是s1s2?
你用String.join("::", sb)没得到分隔符,核心原因是**String.join的作用是连接多个元素**,而你传入的StringBuilder是单个CharSequence对象——它会被当成唯一的拼接元素,直接转成字符串s1s2返回,根本没有插入分隔符的场景(分隔符是用来连接多个元素的,单个元素自然不需要)。
正确的处理方式
如果已经有了StringBuilder,但里面的内容是已拼接好的连续字符串(比如s1s2),程序无法自动识别拆分边界,没法直接用API加分隔符。这种情况建议从源头调整构建方式:
用StringJoiner构建带分隔符的内容,再转成StringBuilder
如果你本来就是要把多个独立字符串用分隔符拼接,一开始用StringJoiner更省心,最后再转成StringBuilder:StringJoiner sj = new StringJoiner("::"); sj.add("s1").add("s2"); StringBuilder sb = new StringBuilder(sj.toString()); // 后续可继续append其他内容用String.join先拼好带分隔符的字符串,再传入StringBuilder
如果你的元素是数组或集合,直接用String.join完成拼接后再放到StringBuilder里:String[] parts = {"s1", "s2"}; StringBuilder sb = new StringBuilder(String.join("::", parts));若必须基于已有分步添加的元素构建(避免手动迭代出错)
别直接逐个append字符串,而是先把元素存到集合/数组里,再用上面的方法处理,彻底规避手动迭代的出错风险。
内容的提问来源于stack exchange,提问作者curiousengineer
相关产品推荐
相关产品推荐

