2016-01-26 8 views
7

Ciao ho seguente metodo per visualizzare una linea di promozione quando io commento uno shoutbox:Come mettere spazi in uno StringBuilder

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

Ma quando ho capito, ho capito watchonyoutube: mickeyendestomendedrol, che è senza spazi. Come ottengo spazi nel mio Stringbuilder?

risposta

21

partire da JDK 1.8, è possibile utilizzare un StringJoiner, che è più conveniente nel tuo caso:

StringJoiner viene utilizzato per costruire una sequenza di caratteri separati da un delimitatore e facoltativamente iniziando con un prefisso fornito e terminante con un suffisso fornito.

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

In questo modo, non sarà necessario aggiungere quegli spazi "manualmente".

+1

soluzione Infatti bello ed efficiente, grazie – KeinHappyAuer

+0

Nota: Questa soluzione è valida solo se stai usando Java 1.8 e fino a –

+0

@NorthernPole si hai ragione, ho dimenticato di dirlo: grazie per l'avviso. –

5

Basta invocare builder.append(" ") nella posizione desiderata.

E.g.

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

... ecc.

NB:

  • Utilizzando la sintassi costruttore fluente qui per comodità
  • È anche possibile aggiungere uno spazio dopo invece ogni letterale (salvo per l'ultimo)
1

Modo più pulito di farlo.

Creare una variabile di classe:

private static final String BLANK_SPACE=" "; 

Ora in voi codice StringBuilder, aggiungerla ove richiesto:

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

Si scrivono solo variabili in Capslock se sono costanti. Se si utilizza al meglio 'string finale statica privata BLANK_SPACE =" ";'. – LordAnomander

1

Uno spazio è solo una stringa contenente il singolo carattere spazio.

Quindi è possibile aggiungerlo esattamente come aggiungendo qualsiasi altra stringa.

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

Ricordate anche che il metodo append restituisce lo StringBuilder quindi è possibile unire aggiunge uno dopo l'altro come seguire

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