Aquí está la cadena, por ejemplo:
"Apple"
y me gustaría agregar cero para completar 8 caracteres:
"000Apple"
¿Como lo puedo hacer?
java
string
formatting
format
Roy
fuente
fuente
("0000" + theString).substring(theString.length())
Es más realista. Esto rellenatheString
con ceros a la izquierda. Lo siento, no pude resistir agregar este comentario :)StringBuilder
, y se necesita un ciclo para completarlo. Si el requisito es realmente solo truncar cadenas de 8 caracteres, está bien, aunque es un caso de uso muy limitado, pero esta solución nunca se puede llamar rápido. Es solo corto.fuente
%07s
lugar de%07d
, obtendrá unFormatFlagsConversionMismatchException
. puedes probarlo.Esto es de commons-lang . Ver javadoc
fuente
Esto es lo que realmente estaba pidiendo, creo:
salida:
fuente
DuplicateFormatFlagsException
(debido00
a la cadena en el formato). Si sustituye una cadena de más de 8 caracteres, esto arroja unIllegalFormatFlagsException
(debido al número negativo).String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
. Ahora no tendrás esta excepción.String.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(0,8);
que ES INCORRECTO, debería serString.format("%0"+ (9 - "Apple".length() )+"d%s",0 ,"Apple").substring(1,9);
.Puede usar el método String.format como se usa en otra respuesta para generar una cadena de 0,
Esto se puede aplicar a su problema ajustando dinámicamente el número de ceros a la izquierda en una cadena de formato:
Sigue siendo una solución desordenada, pero tiene la ventaja de que puede especificar la longitud total de la cadena resultante utilizando un argumento entero.
fuente
Usando la
Strings
clase de utilidad de Guava :fuente
Puedes usar esto:
fuente
He estado en una situación similar y usé esto; Es bastante conciso y no tiene que lidiar con la longitud u otra biblioteca.
Simple y ordenado. El formato de cadena vuelve
" Apple"
así que después de reemplazar el espacio con ceros, da el resultado deseado.fuente
fuente
Use Apache Commons StringUtils.leftPad (o mire el código para hacer su propia función).
fuente
fuente
Puede que tenga que cuidar edgecase. Este es un método genérico.
fuente
fuente
fuente
En Java:
En Scala:
También puede explorar una forma en Java 8 para hacerlo usando secuencias y reducir (similar a como lo hice con Scala). Es un poco diferente a todas las otras soluciones y particularmente me gusta mucho.
fuente
Esto es rápido y funciona para cualquier longitud.
fuente
Puede ser más rápido que la respuesta de Chris Lercher cuando la mayor parte de String tiene exactamente 8 caracteres
en mi caso en mi máquina 1/8 más rápido.
fuente
Aquí está la versión simple de "script legible" sin API que uso para rellenar previamente una cadena. (Simple, legible y ajustable).
fuente
¿Alguien intentó esta solución pura de Java (sin SpringUtils):
Desafortunadamente, esta solución solo funciona si no tiene espacios en blanco en una cadena.
fuente
Si desea escribir el programa en Java puro, puede seguir el siguiente método o hay muchas Utilidades de cadena para ayudarlo mejor con características más avanzadas.
Usando un método estático simple, puede lograr esto de la siguiente manera.
Puedes usar el método anterior
addLeadingText(length, padding text, your text)
La salida sería 000Apple
fuente
No es bonito, pero funciona. Si tiene acceso a apache commons, le sugiero que use ese
fuente