2009-12-14 3 views
40

initialisiere ich möchte eine Funktion erstellen, die die folgende Signatur hat:Kann man ein Java-String mit einem einzigen wiederholten Zeichen auf eine bestimmte Länge

public String createString(int length, char ch) 

Es hat eine Reihe von sich wiederholenden Zeichen des angegebenen zurückgeben soll Länge.

Zum Beispiel, wenn die Länge 5 und ch ist ‚p‘ der Rückgabewert

ppppp 

eine Möglichkeit, dies Gibt es sein sollte, ohne Looping zu tun, bis es die erforderliche Länge ist?
Und ohne extern definierte Konstanten?

+1

Es ist wie ein Duplikat sieht Frage, aber die Antworten hier sind viel schöner :) –

Antwort

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

Wirklich einfach und hilfreich. –

26

StringUtils.repeat(str, count) von Apache commons-lang

+1

Perfekt! Warum schreibst du drei Zeilen, wenn du 1 schreiben kannst? – deGoot

+2

@deGoot, weil Sie brauchen Drittanbieter-Bibliothek für die – zegoline

+0

, die Sie wahrscheinlich schon haben .. :) – Bozho

5

Für die Aufzeichnung mit Java8 Sie, dass mit Bächen tun können:

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

Aber das scheint ein wenig übertrieben.

+0

Upvoted für die Coolness. –

+1

Um zu vermeiden, dass die IntStream-Werte "String p10Times = Stream.generate (() ->" p ") erzeugt und verworfen werden. Limit (10) .collect (Collectors.joining());' – Jelaby

1

Bit mehr voraus und lesbar,

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;  
    } 
Verwandte Themen