Ho bisogno di un metodo che possa dirmi se una stringa ha caratteri non alfanumerici.Come determinare se una stringa ha caratteri non alfanumerici?
Ad esempio se la stringa è "abcdef?" o "abcdefà", il metodo deve restituire true.
Ho bisogno di un metodo che possa dirmi se una stringa ha caratteri non alfanumerici.Come determinare se una stringa ha caratteri non alfanumerici?
Ad esempio se la stringa è "abcdef?" o "abcdefà", il metodo deve restituire true.
Utilizzo di Apache Commons Lang:
!StringUtils.isAlphanumeric(String)
Alternativly un'iterazione su personaggi di stringa e controllare con:
!Character.isLetterOrDigit(char)
quali hai ancora un problema a sinistra: Il vostro esempio stringa "abcdefà" è alfanumerico, dal à
è una lettera. Ma penso tu voglia che sia considerato non alfanumerico, giusto ?!
Quindi si consiglia di usare l'espressione regolare invece:
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
Vorrei evitare di importare librerie esterne se non strettamente necessario E sì: voglio essere considerato come non alfanumerico – lugeno
si deve passare attraverso ogni carattere della stringa e verificare Character.isDigit(char);
o Character.isletter(char);
In alternativa, è possibile utilizzare espressioni regolari.
Ad esempio, "-1234" è un numero, non una stringa alfanumerica. Ma la tua logica Character.isDigit restituirà false per "-". :( – Abhishek
Se è possibile utilizzare la libreria Apache Commons, quindi Commons-Lang StringUtils
ha un metodo chiamato isAlphanumeric()
che fa ciò che si sta cercando.
Un approccio è quello di farlo utilizzando la classe String stesso. Diciamo che la stringa è qualcosa di simile:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
un altro è quello di utilizzare una libreria esterna, come ad esempio beni comuni Apache:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
+1: regex è qui il vincitore Penso che dal momento che l'OP non vuole veramente controllare caratteri alfanumerici: vuole la parola "hasSpecialCharacters (String)" con la sua definizione di "speciale". –
Che non funziona: 'String.matches (...)' in Java controlla se l'espressione regolare corrisponde a * intero * stringa. – ruakh
Hai ragione. Ho modificato la regex – loscuropresagio
string.matches("^\\W*$");
dovrebbe fare quello che vuoi, ma non lo fa includere gli spazi bianchi. string.matches("^(?:\\W|\\s)*$");
corrisponde allo spazio bianco.
È possibile utilizzare il metodo statico isLetter (char c) della classe Character in Java.lang.
public boolean isAlpha(String s) {
char[] charArr = s.toCharArray();
for(char c : charArr) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}
Usare questa funzione per controllare se una stringa è alfanumerica:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
fa risparmiare dover importare librerie esterne e il codice può essere facilmente modificato dovrebbe poi si desidera eseguire diversi controlli di convalida sulle stringhe .
http://stackoverflow.com/questions/1795402/java-check-a-string-if-there-is-a-special-character-in-it –
http://stackoverflow.com/questions/11241690/regex-for-checking-if-a-string-is-strict-alfanumerico – treecoder