Saltar al contenido

¿Cómo eliminar los ceros iniciales del texto alfanumérico?

Si hallas algún problema con tu código o proyecto, recuerda probar siempre en un ambiente de testing antes subir el código al trabajo final.

Solución:

Regex es la mejor herramienta para el trabajo; lo que debería ser depende de la especificación del problema. Lo siguiente elimina los ceros a la izquierda, pero deja uno si es necesario (es decir, no solo convertiría "0" a un espacio en blanco string).

s.replaceFirst("^0+(?!$)", "")

los ^ ancla se asegurará de que el 0+ siendo emparejado está al principio de la entrada. los (?!$) la búsqueda anticipada negativa asegura que no todo el string será emparejado.

Arnés de prueba:

String[] in = 
    "01234",         // "[1234]"
    "0001234a",      // "[1234a]"
    "101234",        // "[101234]"
    "000002829839",  // "[2829839]"
    "0",             // "[0]"
    "0000000",       // "[0]"
    "0000009",       // "[9]"
    "000000z",       // "[z]"
    "000000.z",      // "[.z]"
;
for (String s : in) 
    System.out.println("[" + s.replaceFirst("^0+(?!$)", "") + "]");

Ver también

  • expresiones-regulares.info
    • repeticiones, miradas alrededor y anclas
  • String.replaceFirst(String regex)

Puede usar la clase StringUtils de Apache Commons Lang así:

StringUtils.stripStart(yourString,"0");

¿Qué tal la forma de expresión regular:

String s = "001234-a";
s = s.replaceFirst ("^0*", "");

los ^ anclas al inicio de la string (Supongo por contexto que sus cadenas no son de varias líneas aquí, de lo contrario, es posible que deba investigar A para el inicio de la entrada en lugar del inicio de la línea). los 0* significa cero o más 0 personajes (usted pudo usar 0+ también). los replaceFirst simplemente reemplaza a todos esos 0 personajes al principio sin nada.

Y si, como Vadzim, su definición de ceros a la izquierda no incluye girar "0" (o "000" o cadenas similares) en un espacio vacío string (una expectativa lo suficientemente racional), simplemente vuelva a colocarlo si es necesario:

String s = "00000000";
s = s.replaceFirst ("^0*", "");
if (s.isEmpty()) s = "0";

Te mostramos las reseñas y valoraciones de los usuarios

Eres capaz de amparar nuestro trabajo dejando un comentario o dejando una valoración te damos la bienvenida.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *