965 votos

Margen izquierdo enteros con ceros en Java

¿Cómo izquierdo de la almohadilla de un int con ceros en java cuando se convierte en una cadena?

Estoy básicamente buscan alinear los números enteros hasta 9999 con los ceros a la izquierda.

Por ejemplo. 1 = "0001"

Sé que esto probablemente es simple y como una tarea paralela estoy buscando en google, pero también LO es súper rápido cuando se trata de inane preguntas que debo saber la respuesta a...

1628voto

Yoni Roit Puntos 11338
String.format("%05d", yournumber);

por zero-padding con longitud=5.

http://download.oracle.com/javase/7/docs/api/java/util/Formatter.html

111voto

Boris Pavlović Puntos 22207

Si por cualquier motivo el uso de pre 1.5 de Java, a continuación, puede probar con Apache Commons Lang método

org.apache.commons.lang.StringUtils.leftPad(String str, int size, '0')

27voto

Omar Kooheji Puntos 14073

Encuentra este ejemplo... prueba...

import java.text.DecimalFormat;
class TestingAndQualityAssuranceDepartment
{
    public static void main(String [] args)
    {
        int x=1;
        DecimalFormat df = new DecimalFormat("00");
        System.out.println(df.format(x));
    }
}

Prueba esta y:

String.format("%05d",number);

Tanto trabajo, para mis propósitos creo String.Format es mejor y más breve.

Saludos.

19voto

das Keks Puntos 469

Si el rendimiento es importante, en su caso, usted puede hacerlo usted mismo con menos sobrecarga en comparación con el String.format función:

/**
 * @param in The integer value
 * @param fill The number of digits to fill
 * @return The given value left padded with the given number of digits
 */
public static String lPadZero(int in, int fill){

    boolean negative = false;
    int value, len = 0;

    if(in >= 0){
        value = in;
    } else {
        negative = true;
        value = - in;
        in = - in;
        len ++;
    }

    if(value == 0){
        len = 1;
    } else{         
        for(; value != 0; len ++){
            value /= 10;
        }
    }

    StringBuilder sb = new StringBuilder();

    if(negative){
        sb.append('-');
    }

    for(int i = fill; i > len; i--){
        sb.append('0');
    }

    sb.append(in);

    return sb.toString();       
}

Rendimiento

public static void main(String[] args) {
    Random rdm;
    long start; 

    // Using own function
    rdm = new Random(0);
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        lPadZero(rdm.nextInt(20000) - 10000, 4);
    }
    System.out.println("Own function: " + ((System.nanoTime() - start) / 1000000) + "ms");

    // Using String.format
    rdm = new Random(0);        
    start = System.nanoTime();

    for(int i = 10000000; i != 0; i--){
        String.format("%04d", rdm.nextInt(20000) - 10000);
    }
    System.out.println("String.format: " + ((System.nanoTime() - start) / 1000000) + "ms");
}

Resultado

Función propia: 1697ms

String.format: 38134ms

2voto

BrainDead Puntos 188
int x = 1;
System.out.format("%05d",x);

si desea imprimir el formato de texto directamente en la pantalla.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X