Java, Make sure a String contains only alphanumeric, spaces and dashes
Solution 1
Hum... just program it yourself using String.chatAt(int), it's pretty easy...
Iterate through all char in the string using a position index, then compare it using the fact that ASCII characters 0 to 9, a to z and A to Z use consecutive codes, so you only need to check that character x numerically verifies one of the conditions:
- between '0' and '9'
- between 'a' and 'z'
- between 'A and 'Z'
- a space ' '
- a hyphen '-'
Here is a basic code sample (using CharSequence, which lets you pass a String but also a StringBuilder as 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;
}
Solution 2
You could use:
StringUtils.isAlphanumericSpace(string.replace('-', ' '));
Solution 3
Just iterate through the string, using the character-class methods in java.lang.Character to test whether each character is acceptable or not. Which is presumably all that the StringUtils methods do, and regular expressions are just a way of driving a generalised engine to do much the same.
Solution 4
You have 1 of 2 options: 1. Compose a list of chars that CAN be in the string, then loop over the string checking to make sure each character IS in the list. 2. Compose a list of chars that CANNOT be in the string, then loop over the string checking to make sure each character IS NOT in the list.
Choose whatever option is quicker to compose the list.
Comments
-
Lancelot almost 2 years
In Java, I need to make sure a String only contains
alphanumeric
,space
anddash
characters.I found the class
org.apache.commons.lang.StringUtils
and the almost adequate methodisAlphanumericSpace(String)
... but I also need to include dashes.What is the best way to do this? I don't want to use Regular Expressions.