web-dev-qa-db-fra.com

Peut-on initialiser une chaîne Java avec un seul caractère répété à une longueur spécifique

Je voudrais créer une fonction qui a la signature suivante:

public String createString(int length, char ch)

Il doit renvoyer une chaîne de caractères répétitifs de la longueur spécifiée.
Par exemple, si la longueur est 5 et ch est "p", la valeur de retour doit être:

ppppp

Existe-t-il un moyen de le faire sans bouclage jusqu'à ce qu'il atteigne la longueur requise?
Et sans constantes définies en externe?

49
Ron Tuffin
char[] chars = new char[len];
Arrays.fill(chars, ch);
String s = new String(chars);
89
Joel Shemtov

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

31
Bozho

Voici une solution élégante et pure Java une ligne:

String str = new String(new char[10]).replace("\0", "1");

Source: https://stackoverflow.com/a/4903603/462347

7
Mike B.

Pour mémoire, avec Java8, vous pouvez le faire avec des flux:

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

Mais cela semble quelque peu exagéré.

6
T.Gounelle

Un peu plus avancé et lisible,

 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;    
    }
1
Sohan