如何在StringBuilder中添加空格

15

你好,我有以下方法可以在评论 shoutbox 时显示促销信息:

public String getShoutboxUnderline(){
        StringBuilder builder = new StringBuilder();
        builder.append("watch");
        builder.append("on");
        builder.append("youtube");
        builder.append(":");
        builder.append("Mickey");
        builder.append("en");
        builder.append("de");
        builder.append("stomende");
        builder.append("drol");

        return builder.toString();
    }

但是当我拿到它时,我得到的是watchonyoutube:mickeyendestomendedrol,没有空格。如何在我的StringBuilder中获得空格?

5个回答

66

从JDK 1.8开始,您可以使用StringJoiner,在您的情况下更加方便:

StringJoiner 用于构造由分隔符分隔的字符序列,并可选择地在前缀和后缀中提供指定的字符串。

StringJoiner joiner = new StringJoiner(" "); // Use 'space' as the delimiter
joiner.add("watch") // watch 
      .add("on") // watch on 
      .add("youtube") // watch on youtube
      .add(":") // etc...
      .add("Mickey")
      .add("en")
      .add("de")
      .add("stomende")
      .add("drol");

return joiner.toString();

这样,您就不需要“手动”添加那些空格了。


注意:此解决方案仅适用于使用Java 1.8及以上版本的用户。 - Northern Pole

7

只需在您喜欢的位置调用 builder.append(" ")

例如:

builder
    .append("watch")
    .append(" ")
    .append("on")

注意:

  • 这里使用流畅的构建器语法只是为了方便
  • 您也可以在每个文字后面添加一个空格(除了最后一个)

2
更简洁的方法。
创建一个类变量:
private static final String BLANK_SPACE=" ";

现在在您的 StringBuilder 代码中,按需要添加它:
StringBuilder builder = new StringBuilder();
    builder.append("watch");
    builder.append(BLANK_SPACE);
    builder.append("on");
    builder.append("youtube");
    builder.append(":");
    builder.append(BLANK_SPACE);
    builder.append("Mickey");
    builder.append("en");
    builder.append("de");
    builder.append(BLANK_SPACE);
    builder.append("stomende");
    builder.append("drol");
    System.out.println(builder.toString());

2
只有常量才用大写字母来编写变量。如果是这样的话,最好使用 private static final String BLANK_SPACE = " "; - LordAnomander

1

一个空格只是包含单个字符空格的字符串。

因此,您可以像添加任何其他字符串一样追加它。

    StringBuilder builder = new StringBuilder();
    builder.append("watch");
    builder.append(" ");
    builder.append("on");
    builder.append(" "); 
    // and so on

记住,append方法返回StringBuilder,因此可以像以下这样连接多个appends。
    StringBuilder builder = new StringBuilder();
    builder.append("watch").append(" ");
    builder.append("on").append(" "); 
    // and so on

0

你可以使用它,它相当于使用 StringBuilder 或 StringJoiner,但更小

public class StringUnifier {

    String separator = "";
    List<String> dataList = new ArrayList<>();
    private String response = "";

    StringUnifier(String separator) {
        this.separator = separator;
    }

    StringUnifier add(String data) {
        if (!data.isEmpty()) {
            this.dataList.add(data);
        }
        return this;
    }

    @Override
    public String toString() {
        this.dataList.forEach(str -> {
            this.response += (str + this.separator);
        });
        return this.response.substring(0, this.response.length() - this.separator.length());
    }

}

主要

public class Main_Test {

    public static void main(String[] args) {
        StringUnifier stringUnifier = new StringUnifier(" ");
        stringUnifier.add("columna1").add("columna2").add("columna3");
        System.out.println(stringUnifier.toString());
    }
}

运行

输出:

columna1 columna2 columna3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接