Domanda

In Java, ho bisogno di assicurarsi che una stringa contiene solo caratteri alphanumeric, space e dash.

Ho trovato il org.apache.commons.lang.StringUtils classe e il metodo di quasi adeguata isAlphanumericSpace(String) ... ma ho anche bisogno di includere i trattini.

Qual è il modo migliore per farlo? Non voglio usare espressioni regolari.

È stato utile?

Soluzione

Hum ... basta programmare da soli utilizzando String.chatAt ( int ), è abbastanza facile ...

scorrere tutti char nella stringa utilizzando un indice di posizione, poi confrontarlo con il fatto che i caratteri ASCII da 0 a 9, az e A ad uso Z codici consecutivi, quindi è sufficiente per verificare che i caratteri x numericamente verifica una delle condizioni:

  • tra '0' e '9'
  • tra 'a' e 'z'
  • tra 'A e 'Z'
  • uno spazio ' '
  • un trattino '-'

Ecco un esempio di codice di base (utilizzando CharSequence, che consente di passare una stringa, ma anche uno StringBuilder come 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;
}

Altri suggerimenti

Si potrebbe utilizzare:

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

Basta scorrere la corda, utilizzando i metodi di carattere di classe in java.lang.Character per verificare se ogni carattere è accettabile o meno. Che presumibilmente è tutto quello che i metodi StringUtils fanno, e le espressioni regolari sono solo un modo di guidare un motore generalizzato a fare più o meno lo stesso.

Hai 1 di 2 opzioni: 1. Comporre un elenco di caratteri che possono essere nella stringa, quindi un loop all'interno di stringa di controllo per assicurarsi che ogni personaggio è nella lista. 2. Comporre un elenco di caratteri che non possono essere nella stringa, quindi un loop all'interno di stringa di controllo per assicurarsi che ogni personaggio non è nella lista.

Scegli qualunque opzione è più veloce di comporre la lista.

utilizzare Sicuramente un'espressione regex. Non ha senso per iscritto il proprio sistema quando un sistema molto completo in atto per questo compito esatto. Se hai bisogno di conoscere o di rispolverare regex quindi controllare questo sito, è grande: http://regexr.com

Vorrei sfidare te stesso su questo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top