2009-12-14 9 views
40

Mi piacerebbe creare una funzione che ha la seguente firma:Si può inizializzare una stringa Java con un singolo carattere ripetuto ad una specifica lunghezza

public String createString(int length, char ch) 

Dovrebbe restituire una stringa di ripetere personaggi del specificato lunghezza.

Per esempio, se la lunghezza è 5 e ch è 'p' il valore di ritorno dovrebbe essere

ppppp 

C'è un modo per fare questo senza in loop fino a quando non è la lunghezza desiderata?
E senza costanti definite esternamente?

+1

Sembra proprio un duplicato domanda, ma le risposte qui sono molto più belle :) –

risposta

80
char[] chars = new char[len]; 
Arrays.fill(chars, ch); 
String s = new String(chars); 
+1

Davvero semplice e utile. –

26

StringUtils.repeat(str, count) da Apache Commons Lang-

+1

Perfetto! Perché scrivere tre righe quando puoi scrivere 1? – deGoot

+2

@deGoot, perché hai bisogno di una libreria di terze parti per quello – zegoline

+0

che probabilmente hai già .. :) – Bozho

5

Per la cronaca, con Java8 si possono fare che con i flussi:

String p10times = IntStream.range(0, 10) 
    .mapToObj(x -> "p") 
    .collect(Collectors.joining()); 

ma questo sembra un po 'eccessivo.

+0

In suvento per il fresco. –

+1

Per evitare di generare e scartare i valori IntStream 'String p10Times = Stream.generate (() ->" p "). Limit (10) .collect (Collectors.joining());' – Jelaby

1

Bit più anticipo e leggibile,

public static String repeat(int len, String ch) { 

     String s = IntStream.generate(() -> 1).limit(len).mapToObj(x -> ch).collect(Collectors.joining()); 
     System.out.println("s " + s); 
     return s;  
    } 
Problemi correlati