在Java中,我需要确保String只包含alphanumeric
,space
和dash
个字符。
我找到了班级org.apache.commons.lang.StringUtils
和几乎足够的方法isAlphanumericSpace(String)
......但我还需要包含破折号。
最好的方法是什么?我不想使用正则表达式。
答案 0 :(得分:11)
您可以使用:
StringUtils.isAlphanumericSpace(string.replace('-', ' '));
答案 1 :(得分:6)
嗯......只需使用 String.chatAt ( int )自行编程,这很容易......
使用位置索引迭代字符串中的所有 char ,然后使用ASCII字符0到9,a到z和A到Z使用连续代码的事实进行比较,因此您只需要检查字符x以数字方式验证其中一个条件:
这是一个基本的代码示例(使用CharSequence,它允许您传递String,但也可以传递StringBuilder作为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;
}
答案 2 :(得分:3)
只需遍历字符串,使用java.lang.Character中的字符类方法来测试每个字符是否可接受。这可能是StringUtils方法所做的全部,而正则表达式只是推动广义引擎做同样事情的一种方式。
答案 3 :(得分:1)
您有2个选项中的1个: 1.编写可以在字符串中的字符列表,然后遍历字符串检查以确保列表中的每个字符都是IS。 2.编写一个不能在字符串中的字符列表,然后遍历字符串检查以确保每个字符不在列表中。
选择任何更快的选项来组成列表。
答案 4 :(得分:0)
绝对使用正则表达式。在为这项具体任务建立一个非常全面的系统时,编写自己的系统毫无意义。如果您需要了解或了解正则表达式,请查看此网站,它很棒:http://regexr.com
我会挑战自己。