Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Separar numeros y letras de una cadena

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

octubre 22, 2013 | Unregistered CommenterEmmanuel M

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.

octubre 22, 2013 | Registered Commenterresalpa84

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.

octubre 22, 2013 | Registered CommenterJFK

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

octubre 22, 2013 | Registered Commenterresalpa84

Claro, la mejor opción es usar expresiones regulares. Ese code es solo un demo, de una de varias forman que existen ;)

octubre 22, 2013 | Registered CommenterJFK

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

}

octubre 22, 2013 | Registered Commenterchoces

necesito ayuda

junio 12, 2014 | Unregistered Commenterkely

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

junio 12, 2014 | Unregistered Commenterkely

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

junio 13, 2014 | Unregistered CommenterPaposo

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

junio 13, 2014 | Unregistered Commenterfileal_v