Test Foro de elhacker.net SMF 2.1

Programación => Programación General => Java => Mensaje iniciado por: Beginner Web en 4 Septiembre 2019, 06:06 AM

Título: formateo de numeros
Publicado por: Beginner Web en 4 Septiembre 2019, 06:06 AM
Hola como formateo un numero que cada 3 numeros coloque un punto de derecha a izquierda por ejemplo el dni

123456789

me de

123.456.789

o

12345

me de

12.345

:huh:
Título: Re: formateo de numeros
Publicado por: EdePC en 4 Septiembre 2019, 14:58 PM
Saludos,

- La idea es recorrer tus caracteres de derecha a izquierda y si corresponde al tercer caracter hay que poner un punto además de dicho caracter.

- Se puede hacer usando un bucle para iterar cada caracter:

Código (java) [Seleccionar]

class SplitString {

  public static void main(String[] args) {

    String dni = "123456789";

    char[] dniChars = dni.toCharArray();
    String dniFinal = "";
    int count = 0;

    for (int i = dniChars.length - 1; i >= 0; i--) {
      if (count >= 3) {
        dniFinal = "." + dniFinal;
        count = 0;
      }
      dniFinal = dniChars[i] + dniFinal;
      count++;
    }

    System.out.println(dniFinal);
  }
}



- Aunque esto no tiene nada "raro", solo lo de convertir el String a char[]. Así que supongo que buscas algo más "raro", por ejemplo:

Código (java) [Seleccionar]

class SplitString {

  public static void main(String[] args) {

    String dni = "123456789";
    String dniReverse = new StringBuilder(dni).reverse().toString();
    String dniReversePoint = String.join(".", dniReverse.split("(?<=\\G\\d{3})"));
    String dniFinal = new StringBuilder(dniReversePoint).reverse().toString();
    System.out.println(dniFinal);

  }
}



-- La idea es casi la misma, se invierte el String, se parte cada 3 caracteres usando un ".", se vuelve a invertir y se imprime.
Título: Re: formateo de numeros
Publicado por: Beginner Web en 4 Septiembre 2019, 18:29 PM
Funcionó, muchas gracias!  ;-)