java quitar - ¿Cómo formatear una cadena Java con cero a la izquierda?




9 Answers

En caso de que tengas que hacerlo sin la ayuda de una biblioteca:

("00000000" + "Apple").substring("Apple".length())

(Funciona, siempre que su cadena no tenga más de 8 caracteres).

ceros derecha

Aquí está la cadena, por ejemplo:

"Apple"

y me gustaría agregar cero para completar 8 caracteres:

"000Apple"

¿Como lo puedo hacer?







Puede usar el método String.format como se usa en otra respuesta para generar una cadena de 0,

String.format("%0"+length+"d",0)

Esto se puede aplicar a su problema ajustando dinámicamente el número de 0's principales en una cadena de formato:

public String leadingZeros(String s, int length) {
     if (s.length() >= length) return s;
     else return String.format("%0" + (length-s.length()) + "d%s", 0, s);
}

Sigue siendo una solución desordenada, pero tiene la ventaja de que puede especificar la longitud total de la cadena resultante usando un argumento entero.




Puedes usar esto:

org.apache.commons.lang.StringUtils.leftPad("Apple", 8, "0")



He estado en una situación similar y usé esto; Es bastante conciso y no tiene que lidiar con longitud u otra biblioteca.

String str = String.format("%8s","Apple");
str = str.replace(' ','0');

Simple y ordenado. El formato de cadena devuelve " Apple" así que después de reemplazar el espacio por ceros, da el resultado deseado.




Puede que tenga que encargarse de edgecase. Este es un método genérico.

public class Test {
    public static void main(String[] args){
        System.out.println(padCharacter("0",8,"hello"));
    }
    public static String padCharacter(String c, int num, String str){
        for(int i=0;i<=num-str.length()+1;i++){str = c+str;}
        return str;
    }
}



public static void main(String[] args)
{
    String stringForTest = "Apple";
    int requiredLengthAfterPadding = 8;
    int inputStringLengh = stringForTest.length();
    int diff = requiredLengthAfterPadding - inputStringLengh;
    if (inputStringLengh < requiredLengthAfterPadding)
    {
        stringForTest = new String(new char[diff]).replace("\0", "0")+ stringForTest;
    }
    System.out.println(stringForTest);
}



Puede ser más rápido que Chris Lercher responder cuando la mayoría de en Cadena tiene exactamente 8 caracteres

int length = in.length();
return length == 8 ? in : ("00000000" + in).substring(length);

en mi caso en mi máquina 1/8 más rápido.




public static String lpad(String str, int requiredLength, char padChar) {
    if (str.length() > requiredLength) {
        return str;
    } else {
        return new String(new char[requiredLength - str.length()]).replace('\0', padChar) + str;
    }
}



Related

java string formatting format