I need a method that can tell me if a String has non alphanumeric characters.
For example if the String is "abcdef?" or "abcdefà", the method must return true.
This question is related to
java
string
character
alphanumeric
string.matches("^\\W*$");
should do what you want, but it does not include whitespace. string.matches("^(?:\\W|\\s)*$");
does match whitespace as well.
If you can use the Apache Commons library, then Commons-Lang StringUtils
has a method called isAlphanumeric()
that does what you're looking for.
Though it won't work for numbers, you can check if the lowercase and uppercase values are same or not, For non-alphabetic characters they will be same, You should check for number before this for better usability
Use this function to check if a string is alphanumeric:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
It saves having to import external libraries and the code can easily be modified should you later wish to perform different validation checks on strings.
You can use isLetter(char c) static method of Character class in Java.lang .
public boolean isAlpha(String s) {
char[] charArr = s.toCharArray();
for(char c : charArr) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}
One approach is to do that using the String class itself. Let's say that your string is something like that:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
one other is to use an external library, such as Apache commons:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
You have to go through each character in the String and check Character.isDigit(char);
or Character.isletter(char);
Alternatively, you can use regex.
Source: Stackoverflow.com