在公共场合有这种实用方法吗?

时间:2011-07-27 19:11:00

标签: java apache-commons

我搜索了一段时间,但我找不到任何

boolean isAlpha(final char character)
    {
        char c = Character.toUpperCase(character);
        switch (c)
        {
        case 'A':
        case 'B':
        case 'C':
        case 'D':
        case 'E':
        case 'F':
        case 'G':
        case 'H':
        case 'I':
        case 'J':
        case 'K':
        case 'L':
        case 'M':
        case 'N':
        case 'O':
        case 'P':
        case 'Q':
        case 'R':
        case 'S':
        case 'T':
        case 'U':
        case 'V':
        case 'W':
        case 'X':
        case 'Y':
        case 'Z':
            return true;
        default:
            return false;
        }
    }

7 个答案:

答案 0 :(得分:5)

Commons Lang有CharUtils.isAsciiAlpha,但也许您可以使用java.lang.Character.isLetter(char)javadoc)。不完全相同(后者不仅仅是A-Z ASCII),但可能足以满足您的需求。

答案 1 :(得分:4)

我知道这不是来自lang,而是return (c >= 'A' && c <= 'Z')怎么样?

答案 2 :(得分:2)

你想要CharUtils.isAsciiAlpha

  • 它应该比StringUtils.isAlpha(String)快,因为您没有创建新的String对象。
  • 您可以避免在原始方法中转换为大写字符的成本。
  • 它比范围检查更具可读性(这是它的实现方式)。
  • 对于您的方法返回java.lang.Character.isLetter(char)的某些非拉丁字符,
  • true将返回false

答案 3 :(得分:2)

您可以使用StringUtils.isAlpha

那个开关非常冗长,如果我必须自己编写,我会做类似的事情:

boolean isAlpha(final char c) {
    return "abcdefghijklmnopqrstuvwxyz".indexOf(Character.toLowerCase(c)) != -1;
}

答案 4 :(得分:1)

Character.isLetter()怎么样?

答案 5 :(得分:1)

如果您只想检查给定字符是否介于A-Z之间,更简单的方法是使用正则表达式:

Pattern.matches("[A-Z]", input)

输入为CharSequence。有关Java Pattern类的更多信息:http://download.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

不知道如何将性能与其他选项进行比较。

答案 6 :(得分:1)

Character类提供了许多有用的API。你不需要转换角色。很少有例子

Character.isLetter(char ch)

Character.isLowerCase(char ch)

Character.isUpperCase(char ch)

Character.isDigit(char ch)

Character.isLetterOrDigit(char ch)