2011-07-27 43 views
1

我搜索了一段時間,但我找不到任何在commons-lang中是否有這種實用方法?

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

回答

4

我知道這是不是從郎,但如何return (c >= 'A' && c <= 'Z')

5

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

+0

您是否知道它們在文檔中的含義:'並非所有字母都有大小寫。許多字符是字母,但既不是大寫字母也不是小寫字母,也不是標題。 – MByD

+0

@MByD:是的,這有點模糊,不是嗎?與國際字符集有關,我會下注。 – skaffman

+0

我想他只想要返回ASCII字符。我會假設標準庫方法也會爲非ASCII字符返回true。 –

1

Character.isLetter()如何?

2

你想要CharUtils.isAsciiAlpha

  • 它應該比StringUtils.isAlpha(String)快,因爲你沒有創建一個新的String對象。
  • 您可以避免在原始方法中轉換爲大寫char的成本。
  • 它比範圍檢查更易讀(這是如何實現的)。
  • java.lang.Character.isLetter(char)對於您的方法返回false的某些非拉丁字符將返回true
2

你可以使用StringUtils.isAlpha

該交換機是相當冗長,如果我有我自己寫的我會做這樣的:

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

雖然切換肯定比它需要的更詳細,但它的效率低於它,因爲它每次都會對字母進行線性掃描,而不僅僅是比較端點。 – ColinD

1

Character類提供了許多有用的API。你不需要轉換角色。幾個例子是

Character.isLetter(炭CH)

Character.isLowerCase(炭CH)

Character.isUpperCase(炭CH)

Character.isDigit(炭CH)

Character.isLetterOrDigit(char ch)

相關問題