Java 在commons lang中是否有用于此的实用方法?

Java 在commons lang中是否有用于此的实用方法?,java,apache-commons,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':

我找了些时间,但找不到

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;
        }
    }

我知道这不是来自lang,但是关于
return(c>='A'&&c我知道这不是来自lang,但是关于
return(c>='A'&&cCommons lang有
CharUtils.isAsciiAlpha
,但是也许你可以使用
java.lang.Character.isleter(char)
(),不太一样(后者不仅匹配A-Z ASCII),但可能足以满足您的需要。

Commons Lang有
CharUtils.isAsciiAlpha
,但您可以只使用
java.Lang.Character.isleter(char)
()。不完全相同(后者匹配的不仅仅是A-Z ASCII),但可能足以满足您的需要。

Character.isLetter()如何?

Character.isLetter()如何?

您想要的

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

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

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

      Pattern.matches(“[A-Z]”,输入)

      其中输入为
      CharSequence
      。有关Java
      模式的更多信息
      类:


      但是,不知道这与其他选项在性能方面的比较结果如何。

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

      Pattern.matches(“[A-Z]”,输入)

      其中输入为
      CharSequence
      。有关Java
      模式的更多信息
      类:

      但是,我不知道这与其他选项在性能方面会有什么不同。

      您可以使用

      这个开关非常冗长,如果我必须自己写的话,我会做如下的事情:

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

      这个开关非常冗长,如果我必须自己写的话,我会做如下的事情:

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

      Character类提供了许多有用的API。您不需要转换字符

      字符集(字符集)

      Character.isLowerCase(char-ch)

      Character.isUpperCase(char-ch)

      字符.isDigit(字符ch)


      Character.IsleterOrdigit(char ch)

      Character类提供了许多有用的API。您不需要转换字符。下面是几个示例

      字符集(字符集)

      Character.isLowerCase(char-ch)

      Character.isUpperCase(char-ch)

      字符.isDigit(字符ch)


      Character.isleterordigit(char-ch)

      你知道它们在文档中的意思吗:
      并不是所有的字母都有大小写。许多字符都是字母,但既不是大小写也不是标题。
      ?@MByD:是的,这有点晦涩,不是吗?我敢打赌,这与国际字符集有关。我想他只希望返回ASCII字符。我想他会这样做对于非ASCII字符,标准库方法也将返回true。
      Character.isleter
      匹配除ASCII下限/上限(),所以这肯定不等同于原始字符。@ColinD-但是那些其他字符是什么,从你提供的链接看不清楚,实际上很有趣。你知道它们在文档中的意思吗:
      不是所有的字母都有大小写。许多字符都是字母,但既不是大写,也不是小写,也不是标题。
      ?@MByD:是的,不是这有点晦涩,不是吗?我敢打赌,这与国际字符集有关。我想他只希望返回ASCII字符。我假设标准库方法也会为非ASCII字符返回true。
      character.isleter
      匹配除ASCII下限/上限(),所以这肯定不等同于原始字符。@ColinD-但是那些其他字符是什么,从您提供的链接看不清楚,实际上很有趣。虽然开关肯定比它需要的要详细得多,但它的效率要低,因为它每次都对字母表进行线性扫描,而不是han只是比较端点。虽然开关肯定比它需要的要详细得多,但它的效率要低得多,因为它每次都对字母表进行线性扫描,而不仅仅是比较端点。