Foro sobre Java SE > Separar numeros y letras de una cadena
Se me ocurre que uses dos arreglos, uno con todos los numero y otro con todas las letras, recorrar uno a uno los caracteres de la cadena y verifiques si esta contenido en alguna de las dos lista y asi ir separando letras de numero.
Otra forma que se me ocurre y recomendaria, es que uses Expresiones Regulares para hacerlo.
Buenas noches.
Puedes usar un loop como for:
private String cadena = ADF32AS43;
private String letras = "";
private String numeros = "";
private int numeroFormateado = 0;
private boolean hayNumeros = false;
private boolean hayLetras = false;
private static boolean isNumeric(char caracter){
try {
Integer.parseInt(String.valueOf(caracter));
return true;
} catch (NumberFormatException ex){
return false;
}
}
for (short indice = 0; indice < cadena.length(); indice++)
{
char caracter = cadena.charAt(indice);
if(isNumeric(caracter))
{
numeros += caracter;
}
else
{
letras += caracter;
}
}
private void imprimir()
{
if(numeros.empty() != true)
{
numeroFormateado = Integer.parseInt(numeros);
}
if(hayNumeros == true && hayLetras == false)
{
System.out.println("Solo hay numeros.\nNumeros:\t"+numeros);
}
else if (hayLetras = true && hayNumeros == false=
{
System.out.println("Solo hay letras.\nLetras:\t"+letras);
}
else {
System.out.println("Numeros:\t"+numeros);
System.out.println("Letras:\t"+letras);
}
}
Algo así debería funcionar.
Buen codigo JMιτsυ, pero lo que no me gusto es que asumes que si no es numero entonces es letra, cosa que puede o no ser cierta segun el patron que describa la cadena, es decir si siempre estara compuesta solo por numero y letras el codigo es perfectamente aceptable
Insisto en expresiones regulares :D
Claro, la mejor opción es usar expresiones regulares. Ese code es solo un demo, de una de varias forman que existen ;)
public class Test {
public static void main(String[] args) {
String datos = "ADF3/2A,S4;3 %";
List<Character> alfa = new ArrayList<>();
List<Integer> numeros = new ArrayList<>();
char[] toCharArray = datos.toCharArray();
for (int i = 0; i < datos.length(); i++) {
char caracter = toCharArray[i];
if (Character.isDigit(caracter)) {
numeros.add((int) caracter);
} else {
if (Character.isLetter(caracter)) {
alfa.add(caracter);
}
}
}
System.out.println("caracteres: " + alfa);
System.out.println("numeros: " + numeros);
}
}
necesito ayuda
esto lo hago en java es urgente!!! por favor °°
yo cargue un txt de profesores el cual contiene su numero de cuenta, su matricula y su departamento, ya hasta ahorita pude cargar la clave del profesor, su nombre pero dentro del campo de su nombre en algunos registros m aparecen sus departamentos " 0A9" .
la pregunta es como le hago para que no m aparezcan sus departamentos??? solo para que me aparezcan sus nombres.
ejemplo_:
clave nombre
12451 perez ríos ana lucia 0A9
como quito el ultimo campo {???? "0A9"???
según yo seria con una excepcion o alguna condición pero no tengo idea
eso de los departamentos solo aparecen en algunos profesores no en todos!!
esto lo estoy haciendo en java es urgente!!!!! por favor
Guenas.
Evidentemente lo mejor es obtener un txt de profesores mínimamente formateado.
Dices que el departamento puede aparecer o no aparecer. También veo que nada separa nombres y apellidos. El departamento no dices si siempre contiene algún dígito o no.
Si no puedes obtener un txt de entrada con separadores lo único que se me ocurre es asumir que el departamento siempre contendrá un dígito.
Con esta base podríamos usar una expresión regular parecida a esta:
"\\b.*\\d+.*\\b"
y usarla en una String con replaceAll para substituirla por ""
Un saludo
Los códigos de departamento siguen algún patrón? Por ejemplo, siempre comienzan por un dígito + una vocal + un dígito.
Por otro lado, tienes o puedes conseguir todos los códigos de departamento?
Un saludo
Hola, tengo una duda y es la siguiente:
Como puedo hacer para separar datos ingresados desde una cadena, por ejemplo:
ingreso lo siguiente
ADF32AS43
separar numeros de letras e imprimirlos en pantalla
Gracias