veces una repetir parte manejo funciones extraer declarar concatenar caracteres caracter cadenas cadena agregar java string

una - manejo de cadenas en java



¿Puedo multiplicar cadenas en Java para repetir secuencias? (19)

Con Guava :

Joiner.on("").join(Collections.nCopies(i, someNum));

Esta pregunta ya tiene una respuesta aquí:

Tengo algo como lo siguiente:

int i = 3; String someNum = "123";

Me gustaría agregar i "0" s a la cadena someNum . ¿Tiene alguna forma de multiplicar una cadena para repetirla, como lo hace Python?

Así que podría ir:

someNum = sumNum + ("0" * 3);

¿o algo similar?

Donde, en este caso, mi resultado final sería:

"123000".


Creé un método que hace lo mismo que desea, no dude en probar esto:

public String repeat(String s, int count) { return count > 0 ? s + repeat(s, --count) : ""; }


Dos maneras vienen a la mente:

int i = 3; String someNum = "123"; // Way 1: char[] zeroes1 = new char[i]; Arrays.fill(zeroes1, ''0''); String newNum1 = someNum + new String(zeroes1); System.out.println(newNum1); // 123000 // Way 2: String zeroes2 = String.format("%0" + i + "d", 0); String newNum2 = someNum + zeroes2; System.out.println(newNum2); // 123000

La forma 2 se puede acortar a:

someNum += String.format("%0" + i + "d", 0); System.out.println(someNum); // 123000

Más información sobre String#format() está disponible en su API doc y la de java.util.Formatter .


Java 8 proporciona una forma (aunque un poco torpe). Como un método:

public static String repeat(String s, int n) { return Stream.generate(() -> s).limit(n).collect(Collectors.joining("")); }

o menos eficiente, pero más agradable en mi humilde opinión:

public static String repeat(String s, int n) { return Stream.generate(() -> s).limit(n).reduce((a, b) -> a + b); }


La forma más fácil en Java simple sin dependencias es el siguiente delineador:

new String(new char[generation]).replace("/0", "-")

Reemplace generación con número de repeticiones, y "-" con la cadena (o char) que desea repetir.

Todo lo que hace es crear una cadena vacía que contiene un número n de 0x00 caracteres, y el método integrado de reemplazo de cadena hace el resto.

Aquí hay una muestra para copiar y pegar:

public static String repeat(int count, String with) { return new String(new char[count]).replace("/0", with); } public static String repeat(int count) { return repeat(count, " "); } public static void main(String[] args) { for (int n = 0; n < 10; n++) { System.out.println(repeat(n) + " Hello"); } for (int n = 0; n < 10; n++) { System.out.println(repeat(n, ":-) ") + " Hello"); } }


La forma más simple es:

String someNum = "123000"; System.out.println(someNum);


Manera simple de hacer esto.

private String repeatString(String s,int count){ StringBuilder r = new StringBuilder(); for (int i = 0; i < count; i++) { r.append(s); } return r.toString(); }


No creo que Java proporcione esta característica de manera nativa, aunque sería bueno. ¡Escribo código Perl ocasionalmente y el operador x en Perl es muy útil para repetir cadenas!

Sin embargo, StringUtils en commons-lang provides esta característica. El método se llama repeat() . Su única otra opción es construirlo manualmente utilizando un bucle.


No hay atajos para hacer esto en Java como el ejemplo que dio en Python.

Tendría que hacer esto:

for (;i > 0; i--) { somenum = somenum + "0"; }


No, no puedes. Sin embargo, puedes usar esta función para repetir un personaje.

public String repeat(char c, int times){ StringBuffer b = new StringBuffer(); for(int i=0;i &lt; times;i++){ b.append(c); } return b.toString(); }

Descargo de responsabilidad: lo escribí aquí. Podría tener errores.


No, pero puedes en Scala! (Y luego compilar eso y ejecutarlo usando cualquier implementación de Java !!!!)

Ahora, si quieres hacerlo de la manera más fácil en Java, utiliza el paquete Apache commons-lang. Suponiendo que está utilizando maven, agregue esta dependencia a su pom.xml:

<dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.4</version> </dependency>

Y luego use StringUtils.repeat de la siguiente manera:

import org.apache.commons.lang.StringUtils ... someNum = sumNum + StringUtils.repeat("0", 3);


No. Java no tiene esta característica. Tendría que crear su String usando un StringBuilder , y un bucle de algún tipo.


Si está repitiendo caracteres individuales como el OP, y el número máximo de repeticiones no es demasiado alto, entonces podría usar una operación de subcadena simple como esta:

int i = 3; String someNum = "123"; someNum += "00000000000000000000".substring(0, i);


Similar a lo que ya se ha dicho:

public String multStuff(String first, String toAdd, int amount) { String append = ""; for (int i = 1; i <= amount; i++) { append += toAdd; } return first + append; }

Entrada multStuff("123", "0", 3);

Salida "123000"


Una generalización de la respuesta de Dave Hartnoll (estoy principalmente tomando el concepto ad absurdum, tal vez no use eso en cualquier cosa donde necesite velocidad). Esto le permite a uno llenar la Cadena con i caracteres siguiendo un patrón dado.

int i = 3; String someNum = "123"; String pattern = "789"; someNum += "00000000000000000000".replaceAll("0",pattern).substring(0, i);

Si no necesitas un patrón, sino solo un solo carácter, puedes usarlo (es un poco más rápido):

int i = 3; String someNum = "123"; char c = "7"; someNum += "00000000000000000000".replaceAll("0",c).substring(0, i);


Usando Java11 (actual en la fase de acceso temprano ), puede lograr lo mismo utilizando la API String.repeat siguiente manera:

int i = 3; //frequency to repeat String someNum = "123"; // initial string String ch = "0"; // character to append someNum = someNum + ch.repeat(i); // formulation of the string System.out.println(someNum); // would result in output -- "123000"


con Dollar :

String s = "123" + $("0").repeat(3); // 123000


podemos crear cadenas de multiplicar usando * en python pero no en java que puede usar para el bucle en su caso:

String sample="123"; for(int i=0;i<3;i++) { sample=+"0"; }