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


Answers

public class LeadingZerosExample {
    public static void main(String[] args) {
       int number = 1500;

       // String format below will add leading zeros (the %0 syntax) 
       // to the number above. 
       // The length of the formatted string will be 7 characters.

       String formatted = String.format("%07d", number);

       System.out.println("Number with leading zeros: " + formatted);
    }
}
Question

Aquí está la cadena, por ejemplo:

"Apple"

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

"000Apple"

¿Como lo puedo hacer?




Esto es lo que realmente estaba pidiendo, creo:

String.format("%0"+ (8 - "Apple".length() )+"d%s",0 ,"Apple"); 

salida:

000Apple



public class PaddingLeft {
    public static void main(String[] args) {
        String input = "Apple";
        String result = "00000000" + input;
        int length = result.length();
        result = result.substring(length - 8, length);
        System.out.println(result);
    }
}



Esto es rápido y funciona para cualquier longitud.

public static String prefixZeros(String value, int len) {
    char[] t = new char[len];
    int l = value.length();
    int k = len-l;
    for(int i=0;i<k;i++) { t[i]='0'; }
    value.getChars(0, l, t, k);
    return new String(t);
}



No es bonito, pero funciona. Si tiene acceso a Apache commons, sugeriría que use ese

if (val.length() < 8) {
  for (int i = 0; i < val - 8; i++) {
    val = "0" + val;
  }
}



Aquí está la versión simple de "script legible" sin API que uso para rellenar previamente una cadena. (Simple, Legible y Ajustable).

while(str.length() < desired_length)
  str = '0'+str;



String input = "Apple";
StringBuffer buf = new StringBuffer(input);

while (buf.length() < 8) {
  buf.insert(0, '0');
}

String output = buf.toString();



Usando la clase de utilidad Strings de Guava:

Strings.padStart("Apple", 8, '0');






Related