web-dev-qa-db-fra.com

Comment mettre des espaces dans un constructeur de chaînes

Bonjour, j'ai la méthode suivante pour afficher une ligne de promotion lorsque je commente un 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();
    }

Mais quand je l'obtiens, j'obtiens watchonyoutube: mickeyendestomendedrol, qui est sans espaces. Comment obtenir des espaces dans mon Stringbuilder?

7
KeinHappyAuer

À partir de JDK 1.8, vous pouvez utiliser un StringJoiner , ce qui est plus pratique dans votre cas:

StringJoiner est utilisé pour construire une séquence de caractères séparés par un délimiteur et éventuellement commençant par un préfixe fourni et se terminant par un suffixe fourni.

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

De cette façon, vous n'aurez pas besoin d'ajouter ces espaces "manuellement".

26
Mohammed Aouf Zouag

Il suffit d’appeler builder.append(" ") à l’emplacement de votre choix.

Par exemple.

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

...etc.

NB:

  • Utilisation de la syntaxe de construction fluide ici pour plus de commodité
  • Vous pouvez aussi simplement ajouter un espace après chaque littéral (sauf pour le dernier)
5
Mena

Une façon plus propre de le faire.

Créez une variable de classe:

private static final String BLANK_SPACE=" ";

Maintenant, dans votre code StringBuilder, ajoutez-le si nécessaire:

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
abdulrafique

Un espace est seulement une chaîne contenant l'unique caractère caractère espace .

Ainsi, vous pouvez l'ajouter exactement comme si vous ajoutiez une autre chaîne.

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

Rappelez-vous également que la méthode append renvoie le StringBuilder afin qu'il soit possible de joindre des annexes les unes après les autres comme suit

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