Validar una cadena solo con las letras a y b, y que contenga al menos un espacio

publicado por: Anonymous

Hola comunidad de StackOverflow, les comento que se tiene que validar una cadena ingresada desde el teclado que solo debe contener las letras a y b y tener al menos un espacio. Con el código que tengo hasta ahora ya no hay problema con cadenas de tipo “abbaab abba”, el problema es que también valida las cadenas que no tienen espacio, ¿qué tengo que agregar para que ya no valide las cadenas que no tienen espacio?`

Scanner entrada = new Scanner(System.in);

String cadena = entrada.nextLine();

Pattern rango = Pattern.compile("[^A-Ba-b ]");

Matcher cadenaValida = rango.matcher(cadena);

    if (!cadenaValida.find()) 
        System.out.println("La cadena que ingresaste es valida");

    else
        System.out.println("La cadena no es valida");

solución

creo que con el siguiente código lo consigues:

Scanner entrada = new Scanner(System.in);

String cadena = entrada.nextLine();

Pattern rango = Pattern.compile("([a|b]*\s[a|b]*)*");

Matcher cadenaValida = rango.matcher(cadena);

if (cadenaValida.matches()) {
    System.out.println("La cadena que ingresaste es valida");
} else {
    System.out.println("La cadena no es valida");
}

Ten en cuenta que debes usar matches en lugar de find, para evitar que solo casen subcadenas. El s indica el carácter espacio

Respondido por: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *