Manera sencilla de repetir una cadena.

Resuelto Ethan Heilman asked hace 15 años • 33 respuestas

Estoy buscando un método u operador común simple que me permita repetir una cadena n veces. Sé que podría escribir esto usando un bucle for, pero deseo evitar los bucles for siempre que sea necesario y debería existir un método directo simple en alguna parte.

String str = "abc";
String repeated = str.repeat(3);

repeated.equals("abcabcabc");

Relacionado con:

repetir cadena javascript Cree NSString repitiendo otra cadena un número determinado de veces

Editado

Intento evitar los bucles for cuando no son completamente necesarios porque:

  1. Aumentan el número de líneas de código incluso si están ocultas en otra función.

  2. Alguien que lea mi código tiene que descubrir qué estoy haciendo en ese bucle for. Incluso si está comentado y tiene nombres de variables significativos, aún deben asegurarse de que no esté haciendo nada "inteligente".

  3. A los programadores les encanta poner cosas inteligentes en bucles for, incluso si lo escribo para "hacer sólo lo que se pretende hacer", eso no impide que alguien venga y agregue alguna "solución" inteligente adicional.

  4. Muy a menudo es fácil equivocarse. Los bucles For que involucran índices tienden a generar errores por uno.

  5. Los bucles For a menudo reutilizan las mismas variables, lo que aumenta la posibilidad de que se produzcan errores de alcance realmente difíciles de encontrar.

  6. Los bucles For aumentan la cantidad de lugares que un cazador de errores debe buscar.

Ethan Heilman avatar Aug 06 '09 02:08 Ethan Heilman
Aceptado

Aquí está la versión más corta (se requiere Java 1.5+):

repeated = new String(new char[n]).replace("\0", s);

¿Dónde nestá la cantidad de veces que desea repetir la cadena y ses la cadena a repetir?

No se necesitan importaciones ni bibliotecas.

user102008 avatar Feb 04 '2011 22:02 user102008

Si está utilizando Java <= 7 , esto es lo más "conciso" posible:

// create a string made up of n copies of string s
String.format("%0" + n + "d", 0).replace("0", s);

En Java 8 y superiores hay una forma más legible:

// create a string made up of n copies of string s
String.join("", Collections.nCopies(n, s));

Finalmente, para Java 11 y superiores, existe un nuevo repeat​(int count)método específicamente para este propósito ( enlace ).

"abc".repeat(12);

Alternativamente, si su proyecto utiliza bibliotecas Java, hay más opciones.

Para Apache Commons :

StringUtils.repeat("abc", 12);

Para Google Guayaba :

Strings.repeat("abc", 12);
Caner avatar Jul 28 '2011 11:07 Caner