Java,确保String只包含字母数字,空格和短划线

时间:2009-04-14 23:39:04

标签: java string parsing contains

在Java中,我需要确保String只包含alphanumericspacedash个字符。

我找到了班级org.apache.commons.lang.StringUtils和几乎足够的方法isAlphanumericSpace(String) ......但我还需要包含破折号。

最好的方法是什么?我不想使用正则表达式。

5 个答案:

答案 0 :(得分:11)

您可以使用:

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

答案 1 :(得分:6)

嗯......只需使用 String.chatAt int )自行编程,这很容易......

使用位置索引迭代字符串中的所有 char ,然后使用ASCII字符0到9,a到z和A到Z使用连续代码的事实进行比较,因此您只需要检查字符x以数字方式验证其中一个条件:

  • 介于'0'和'9'
  • 之间
  • 介于'a'和'z'之间
  • 介于'A和'Z'之间
  • a space''
  • 连字符' - '

这是一个基本的代码示例(使用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

我会挑战自己。