quitar - ¿Cómo formatear una cadena Java con cero a la izquierda?
quitar ceros a la derecha java (18)
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 lo que realmente estaba pidiendo, creo:
String.format("%0"+ (8 - "Apple".length() )+"d%s",0 ,"Apple");
salida:
000Apple
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.
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;
}
}
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.
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")
Usando la clase de utilidad Strings
de Guava:
Strings.padStart("Apple", 8, ''0'');
Use Apache Commons StringUtils.leftPad (o mire el código para hacer su propia función).
StringUtils.leftPad(yourString, 8, ''0'');
Esto es de commons-lang . Ver javadoc
String input = "Apple";
StringBuffer buf = new StringBuffer(input);
while (buf.length() < 8) {
buf.insert(0, ''0'');
}
String output = buf.toString();
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);
}
}
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;
}
}
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);
}