regular quitar izquierda expresion eliminar derecha ceros java string formatting format

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




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