java - regular - quitar ceros a la derecha js




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

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;

Aquí está la cadena, por ejemplo:

"Apple"

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

"000Apple"

¿Como lo puedo hacer?


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).


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);
}

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;
    }
}

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.


Puedes usar esto:

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

Usando la clase de utilidad Strings de Guava:

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


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

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

String output = buf.toString();

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);
    }
}

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;
    }
}






format