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

Lan*_*lot 5 java string parsing contains

在Java中,我需要确保一个字符串只包含alphanumeric,spacedash字符.

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

做这个的最好方式是什么?我不想使用正则表达式.

Ski*_*ead 11

你可以使用:

StringUtils.isAlphanumericSpace(string.replace('-', ' '));
Run Code Online (Sandbox Code Playgroud)


Var*_*han 6

嗯...只是使用String.chatAt(int)自己编程,这很简单......

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

  • '0'和'9'之间
  • 'a'和'z'之间
  • 'A和'Z'之间
  • 空间 ' '
  • 连字符' - '

这是一个基本的代码示例(使用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;
}
Run Code Online (Sandbox Code Playgroud)