How to Put Spaces in a Stringbuilder

Hello I have following method to display a promotion line when I comment a 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();
    }

But when I get it, I get watchonyoutube:mickeyendestomendedrol, which is without spaces. How do I get spaces in my Stringbuilder?

4 Answers

As of JDK 1.8, you can use a StringJoiner, which is more convenient in your case:

StringJoiner is used to construct a sequence of characters separated by a delimiter and optionally starting with a supplied prefix and ending with a supplied suffix.

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();

This way, you will not need to add those spaces "manually".

1

Just invoke builder.append(" ") at the location of your preference.

E.g.

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

...etc.

NB:

  • Using the fluent builder syntax here for convenience
  • You can also just append a space after each literal instead (save for the last one)

Cleaner way of doing it.

Create a class variable:

private static final String BLANK_SPACE=" ";

Now in you StringBuilder code ,append it where required:

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());
1

A space is only a string containing the single character space.

So you can append it exactly as appending any other string.

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

Remember also that the append method returns the StringBuilder so it is possible to join appends one after the other as follow

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

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Elena Rostova

Elena Rostova

Lead Health, Wellness & Medical Journalist

Elena Rostova holds a Master's degree in Public Health Journalism. She covers groundbreaking medical research, holistic wellness trends, mental health awareness, and nutritional science.

Share this article
Twitter Facebook Pinterest