Foro de elhacker.net

Programación => 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
  1. class SplitString {
  2.  
  3.  public static void main(String[] args) {
  4.  
  5.    String dni = "123456789";
  6.  
  7.    char[] dniChars = dni.toCharArray();
  8.    String dniFinal = "";
  9.    int count = 0;
  10.  
  11.    for (int i = dniChars.length - 1; i >= 0; i--) {
  12.      if (count >= 3) {
  13.        dniFinal = "." + dniFinal;
  14.        count = 0;
  15.      }
  16.      dniFinal = dniChars[i] + dniFinal;
  17.      count++;
  18.    }
  19.  
  20.    System.out.println(dniFinal);
  21.  }
  22. }
  23.  
  24.  

- 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
  1. class SplitString {
  2.  
  3.  public static void main(String[] args) {
  4.  
  5.    String dni = "123456789";
  6.    String dniReverse = new StringBuilder(dni).reverse().toString();
  7.    String dniReversePoint = String.join(".", dniReverse.split("(?<=\\G\\d{3})"));
  8.    String dniFinal = new StringBuilder(dniReversePoint).reverse().toString();
  9.    System.out.println(dniFinal);
  10.  
  11.  }
  12. }
  13.  
  14.  

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