commons-langでアルファベットを判定する

山崎良
2008-07-29 07:00:00
  • このエントリーをはてなブックマークに追加

 第2回はCharUtilsの判定メソッド「isAsciiAlpha」を中心に扱ってみよう。

  • CharUtils#isAsciiAlpha
  • CharUtils#isAsciiAlphaLower
  • CharUtils#isAsciiAlphaUpper

 CharUtils#isAsciiAlphaは、引数で指定した文字(char型の値)が半角の「A〜Z」もしくは「a〜z」の場合にのみ真を返す。

 動作は以下のようになる。

  • CharUtils.isAsciiAlpha('a') = true
    →半角アルファベットの小文字の「a〜z」を引数に指定した場合にはtrue
  • CharUtils.isAsciiAlpha('A') = true
    →半角アルファベットの大文字の「A〜Z」を引数に指定した場合にはtrue
  • CharUtils.isAsciiAlpha('3') = false
    →半角数字を引数に指定した場合にはfalse
  • CharUtils.isAsciiAlpha('-') = false
    →半角記号を引数に指定した場合にはfalse
  • CharUtils.isAsciiAlpha('\n') = false
    →コントロール文字を引数に指定した場合にはfalse

 また、CharUtils#isAsciiAlphaLowerで半角アルファベットの小文字であるかどうかのチェック、CharUtils#isAsciiAlphaUpperで半角アルファベットの大文字であるかどうかのチェックを行うことができる。

StringUtils#isAlpha

 前回に解説したStringUtilsクラスには「isAlpha」というメソッドがあるが、こちらは注意が必要だ。

 名称からは「文字列がアルファベットのみで構成される場合に返り値がtrueになるメソッド」を想像しがちだろう。英語圏で使用する場合にはその認識でもおおむね間違っていないのだが、例えば日本語を扱う場合の動作は、おそらく意図するものと異なってくる。

 まずは半角文字から見ていこう。

  • StringUtils.isAlpha(null) = false
    →nullの場合はfalse
  • StringUtils.isAlpha("") = true
    →空文字の場合はtrue
  • StringUtils.isAlpha(" ") = false
    →半角スペースが含まれる場合はfalse
  • StringUtils.isAlpha("abc") = true
    →アルファベットのみの場合はtrue
  • StringUtils.isAlpha("ab2c") = false
    →数字が含まれる場合はfalse
  • StringUtils.isAlpha("ab-c") = false
    →'-'等の記号が含まれる場合はfalse
  • StringUtils.isAlpha("アアア") = false
    →半角カタカナが含まれる場合はtrue(!)

 全角文字を含む文字列を引数とした場合には以下のようになる。

  • StringUtils.isAlpha("あああ") = true
  • StringUtils.isAlpha("アアア") = true
  • StringUtils.isAlpha("漢字") = true
  • StringUtils.isAlpha("AAA") = true
  • StringUtils.isAlpha("111") = false
  • StringUtils.isAlpha("−") = false

 「全角ひらがな」「全角カタカナ」「漢字」などを指定した場合にtrueを返す点で、多くの人が名前から想像する動作とは異なるだろう。可読性の点から言えば、筆者はStringUtils#isAlphaを使用しない方が良いと考えている。

  • 新着記事
  • 特集
  • ブログ