2009-12-14 17 views
40

Me gustaría crear una función que tiene la firma siguiente:Se puede inicializar una serie Java con un solo carácter se repite a una longitud específica

public String createString(int length, char ch) 

Se debe devolver una cadena de caracteres repetidos de la especificada longitud.

Por ejemplo, si la longitud es de 5 y CH es 'p' el valor de retorno debe ser

ppppp 

¿Hay una manera de hacer esto sin un bucle hasta que tenga la longitud requerida?
Y sin ninguna constante definida externamente?

+1

Que tiene un aspecto como un duplicado pregunta, pero las respuestas aquí son mucho más agradables :) –

Respuesta

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

Realmente simple y útil. –

26

StringUtils.repeat(str, count) de commons-lang apache

+1

¡Perfecto! ¿Por qué escribir tres líneas cuando puedes escribir 1? – deGoot

+2

@deGoot, porque necesita una biblioteca de terceros para esa – zegoline

+0

que probablemente ya tenga ... :) – Bozho

5

Para el registro, con Java8 que puede hacer eso con corrientes:

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

pero esto parece un poco excesivo.

+0

Voto a favor del coolness. –

+1

Para evitar generar y descartar los valores de IntStream 'String p10Times = Stream.generate ((- -" p "). Limit (10) .collect (Collectors.joining());' – Jelaby

1

poco más adelantado y legible,

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;  
    } 
Cuestiones relacionadas