Pregunta

En Java, lo que necesito para asegurarse una cadena sólo contiene caracteres alphanumeric, space y dash.

He encontrado el org.apache.commons.lang.StringUtils clase y el método casi isAlphanumericSpace(String) adecuada ... pero también necesito incluir guiones.

¿Cuál es la mejor manera de hacer esto? No quiero usar expresiones regulares.

¿Fue útil?

Solución

Hum ... acaba de programar usted mismo utilizando String.chatAt ( int ), que es bastante fácil ...

Iterar a través de todos Char en la cadena mediante un índice de posición, luego se compara con el hecho de que los caracteres ASCII 0 a 9, de A a Z y A a Z utiliza códigos consecutivos, por lo que sólo necesita para comprobar que los caracteres x numéricamente verifica los una de las condiciones:

  • entre '0' y '9'
  • entre 'a' y 'z'
  • entre 'A y 'Z'
  • un espacio ' '
  • un guión '-'

Este es un ejemplo de código básica (usando CharSequence, que le permite pasar una cadena, sino también un StringBuilder como arg):

public boolean isValidChar(CharSequence seq) {
    int len = seq.length();
    for(int i=0;i<len;i++) {
        char c = seq.charAt(i);
        // Test for all positive cases
        if('0'<=c && c<='9') continue;
        if('a'<=c && c<='z') continue;
        if('A'<=c && c<='Z') continue;
        if(c==' ') continue;
        if(c=='-') continue;
        // ... insert more positive character tests here
        // If we get here, we had an invalid char, fail right away
        return false;
    }
    // All seen chars were valid, succeed
    return true;
}

Otros consejos

Se puede usar:

StringUtils.isAlphanumericSpace(string.replace('-', ' '));

Sólo iterar a través de la cadena, utilizando los métodos de la clase de caracteres en java.lang.Character para probar si cada personaje es aceptable o no. Que presumiblemente es todo lo que los métodos StringUtils hacen, y expresiones regulares son sólo una forma de conducir un motor generalizada que hacer lo mismo.

Tienes 1 de 2 opciones: 1. Componer una lista de caracteres que pueden estar en la cadena, y un bucle sobre la cadena de comprobación para asegurarse de que cada personaje está en la lista. 2. Componer una lista de caracteres que no pueden estar en la cadena, y un bucle sobre la cadena de comprobación para asegurarse de que cada personaje no está en la lista.

Seleccione cualquier opción es más rápida para componer la lista.

Definitivamente utilizar una expresión de expresiones regulares. No hay ningún punto en la escritura de su propio sistema cuando un sistema muy completo en el lugar para realizar este proceso. Si necesita aprender o repasar expresiones regulares a continuación, echa un vistazo a este sitio web, es genial: http://regexr.com

Me ponerse a prueba en este caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top