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:
class SplitString {
public static void main
(String[] args
) {
char[] dniChars = dni.toCharArray();
int count = 0;
for (int i = dniChars.length - 1; i >= 0; i--) {
if (count >= 3) {
dniFinal = "." + dniFinal;
count = 0;
}
dniFinal = dniChars[i] + dniFinal;
count++;
}
}
}
- 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:
class SplitString {
public static void main
(String[] args
) {
String dniReverse
= new StringBuilder
(dni
).
reverse().
toString(); String dniReversePoint
= String.
join(".", dniReverse.
split("(?<=\\G\\d{3})")); String dniFinal
= new StringBuilder
(dniReversePoint
).
reverse().
toString();
}
}
-- La idea es casi la misma, se invierte el String, se parte cada 3 caracteres usando un ".", se vuelve a invertir y se imprime.