¿Cómo dejaste el pad an int
con ceros al convertir a a String
en java?
Básicamente, estoy buscando rellenar enteros 9999
con ceros a la izquierda (por ejemplo, 1 = 0001
).
java
formatting
zero-pad
Omar Kooheji
fuente
fuente
new String(Integer.toString(num + 10000)).substring(1)
enfoque sinum
es mayor que 9999, ijs.Respuestas:
Usar
java.lang.String.format(String,Object...)
así:para el relleno cero con una longitud de 5. Para la salida hexadecimal, reemplace el
d
con unx
como en"%05x"
.Las opciones de formato completo se documentan como parte de
java.util.Formatter
.fuente
String.format
sean similares a printf () en C?%012d
%d can't format java.lang.String arguments
Digamos que quieres imprimir
11
como011
Se puede usar un formateador :
"%03d"
.Puede usar este formateador de esta manera:
Alternativamente, algunos métodos de Java admiten directamente estos formateadores:
fuente
F
de formato () debe serf
:String.format(...);
.int prefixLength = requiredTotalLength - String.valueOf(numericValue).length
. Ej. ) Y luego uso un método de cadena de repetición para crear el prefijo requerido. Hay varias formas de repetir cadenas, pero no hay una Java nativa, afaik: stackoverflow.com/questions/1235179/…Si por alguna razón usa Java pre 1.5, puede intentar con el método Lang de Apache Commons
fuente
Encontré este ejemplo ... Lo probaré ...
Probado esto y:
Ambos funcionan, para mis propósitos creo que String.Format es mejor y más sucinto.
fuente
Si el rendimiento es importante en su caso, puede hacerlo usted mismo con menos sobrecarga en comparación con la
String.format
función:Actuación
Resultado
Función propia: 1697 ms
Formato de cadena: 38134 ms
fuente
for( int i : data ) strData += (i > 9 ? (i > 99 ? "" : "0") : "00") + Integer.toString( i ) + "|";
funcionó muy rápido (¡perdón, no lo cronometré!).Puedes usar Google Guava :
Maven
Código de muestra:
Nota:
Guava
es una biblioteca de gran utilidad, sino que también ofrece un montón de características que se referían aCollections
,Caches
,Functional idioms
,Concurrency
,Strings
,Primitives
,Ranges
,IO
,Hashing
,EventBus
, etc.Ref: Guayaba Explicada
fuente
Prueba este:
fuente
Aunque muchos de los enfoques anteriores son buenos, a veces necesitamos formatear enteros y flotantes. Podemos usar esto, particularmente cuando necesitamos rellenar un número particular de ceros a la izquierda y a la derecha de los números decimales.
fuente
si desea imprimir el texto formateado directamente en la pantalla.
fuente
String.format
ySystem.out.format
llamar a la mismajava.util.Formatter
implementación.Use la clase DecimalFormat, así:
SALIDA: 0000811
fuente
Aquí es cómo puede formatear su cadena sin usar
DecimalFormat
.String.format("%02d", 9)
String.format("%03d", 19)
String.format("%04d", 119)
fuente
Verifique mi código que funcionará para entero y String.
Supongamos que nuestro primer número es 2. Y queremos agregar ceros a eso para que la longitud de la cadena final sea 4. Para eso, puede usar el siguiente código
fuente
(new char[diff])
por quéreplace("\0", "0")
qué es ... quéDebe usar un formateador, el siguiente código usa NumberFormat
fuente
El único problema con este enfoque es que te hace ponerte el sombrero de pensamiento para descubrir cómo funciona.
fuente
number
owidth
mayor que 18.No se necesitan paquetes:
Esto rellenará la cadena con tres caracteres y es fácil agregar una parte más para cuatro o cinco. Sé que esta no es la solución perfecta de ninguna manera (especialmente si quieres una cadena acolchada grande), pero me gusta.
fuente