43 votes

Java: String - ajouter un caractère n fois

Y a-t-il un moyen simple d'ajouter un caractère ou une autre chaîne n fois à une chaîne existante? Je n'ai rien trouvé dans String, Stringbuilder, etc.

3 votes

Quel est le problème avec une boucle for ?

1 votes

Cherchez-vous une méthode? il n'y en a pas.

2 votes

Je n'ai rien trouvé dans String, Stringbuilder ... Je suis sûr que vous n'avez pas vu la méthode append(str) de StringBuilder ou l'opération de concaténation + de String.

49voto

zeller Points 3003

Apache commons-lang3 contient StringUtils.repeat(String, int), avec cela vous pouvez faire (pour la simplicité, pas avec StringBuilder):

String original;
original = original + StringUtils.repeat("x", n);

Comme c'est open source, vous pouvez lire comment c'est écrit. Il y a une optimisation mineure pour de petits n-s si je me souviens bien, mais la plupart du temps cela utilise StringBuilder.

1 votes

39voto

Xeon Points 3661

En cas de Java 8, vous pouvez faire :

int n = 4;
String existing = "...";
String result = existing + String.join("", Collections.nCopies(n, "*"));

Sortie :

...****

En Java 8, la méthode String.join a été ajoutée. Mais Collections.nCopies est même en Java 5.

1 votes

Il faut adorer les solutions en une seule ligne. +1

35voto

Mukuntha Priya S R Points 366

Vous pouvez le faire en utilisant les API de flux Java 8. Le code suivant crée la chaîne "cccc" à partir de "c" :

String s = "c";
int n = 4;
String sRepeated = IntStream.range(0, n).mapToObj(i -> s).collect(Collectors.joining(""));

31voto

sudocode Points 9483

Pour le cas de la répétition d'un seul caractère (pas une chaîne de caractères), vous pourriez utiliser Arrays.fill:

  String original = "original ";
  char c = 'c';
  int number = 9;

  char[] repeat = new char[number];
  Arrays.fill(repeat, c);
  original += new String(repeat);

2 votes

Cela pourrait être l'une des façons les plus efficaces et pourrait toujours être écrite en trois lignes.

15voto

oxy_js Points 987

Utilisez ceci :

String input = "original";
String newStr = "nouveau"; // nouvelle chaîne à ajouter
int n = 10 // nombre de fois que nous voulons ajouter
input = input + new String(new char[n]).replace("\0", newStr);

0 votes

Je suis sûr que le symbole "`" n'est pas correct à la fin de la ligne 4... ;)

0 votes

Pourquoi le nouveau char[n]? Ne devrait-il pas être nouveau char[n*newStr.length()]?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X