commons-langで「アルファベットor数値」の判定をする

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

CharUtils#isAsciiAlphanumeric

 CharUtils#isAsciiAlphanumericは引数で指定した文字が半角の数字([0-9])、もしくは半角アルファベット([A-Z]あるいは[a-z])の場合にのみ真を返す。

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

  • CharUtils.isAsciiAlphanumeric('a') = true
    →半角小文字アルファベットを引数に指定した場合にはtrue。
  • CharUtils.isAsciiAlphanumeric('A') = true
    →半角大文字アルファベットを引数に指定した場合にはtrue。
  • CharUtils.isAsciiAlphanumeric('1') = true
    →半角数字を引数に指定した場合にはtrue。
  • CharUtils.isAsciiAlphanumeric('-') = false
    →半角記号を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('\n') = false
    →コントロール文字を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric(' ') = false
    →半角スペースを引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric(' ') = false
    →全角スペースを引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('あ') = false
    →全角のひらがなを引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('ア') = false
    →全角のカタカナを引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('漢') = false
    →全角の漢字を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('a') = false
    →全角のアルファベット(小文字)を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('A') = false
    →全角のアルファベット(大文字)を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('1') = false
    →全角の数字を引数に指定した場合にはfalse。
  • CharUtils.isAsciiAlphanumeric('−') = false
    →全角の記号を引数に指定した場合にはfalse。

StringUtils#isAlphanumeric

 第2回で解説した「isAlpha」と同じように、StringUtilsには「isAlphanumeric」というメソッドがある。isAlphanumericも名前から期待する動作とは異なる動きをするため、注意が必要だ。

  • StringUtils.isAlphanumeric(null) = false
    →nullの場合はfalse
  • StringUtils.isAlphanumeric("") = true
    →文字列が空文字列である場合にtrue。
  • StringUtils.isAlphanumeric("abc") = true
    →文字列がアルファベット(小文字)のみで構成される場合はtrue。
  • StringUtils.isAlphanumeric("ABC") = true
    →文字列がアルファベット(大文字)のみで構成される場合はtrue。
  • StringUtils.isAlphanumeric("111") = true
    →文字列が半角数字のみで構成される場合はtrue。
  • StringUtils.isAlphanumeric("1Aa") = true
    →文字列が半角数字と半角アルファベットから構成される場合はtrue。
  • StringUtils.isAlphanumeric("ab-c") = false
    →'-'等の半角記号が含まれる場合はfalse。
  • StringUtils.isAlphanumeric("ab\nc") = false
    →コントロール文字が含まれる場合はfalse。
  • StringUtils.isAlphanumeric("ab c") = false
    →半角スペースが含まれる場合はfalse。
  • StringUtils.isAlphanumeric("ab c") = false
    →全角スペースが含まれる場合はfalse。

 ここまでは概ね期待通りに動くが……

  • StringUtils.isAlphanumeric("あいう") = true
  • StringUtils.isAlphanumeric("アイウ") = true
  • StringUtils.isAlphanumeric("漢字") = true
  • StringUtils.isAlphanumeric("abc") = true
  • StringUtils.isAlphanumeric("ABC") = true
  • StringUtils.isAlphanumeric("111") = true
  • StringUtils.isAlphanumeric("ab−c") = false
  • StringUtils.isAlphanumeric("アアア") = true

 StringUtils#isAlphaと同様、文字列に全角文字や半角カタカナが含まれる場合には、やはりメソッド名から期待する動作と異なる動きをする。

 他にもcommons-langにはいくつもの判定メソッドがある。ここではそのいくつかを紹介しよう。

  • StringUtils#isBlank
    →引数で指定した文字列が空文字列、半角スペース、全角スペースのみで”構成されている”場合にtrueを返す。
  • StringUtils#isNotBlank
    →引数で指定した文字列が空文字列、半角スペース、全角スペースのみで”構成されていない”場合にtrueを返す。
  • CharUtils#isAscii
    →引数で指定した文字がASCII文字(半角英数、半角記号、コントロール文字)である場合にtrueを返す。
  • CharUtils#isAsciiControl
    →引数で指定した文字がコントロール文字である場合にtrueを返す。
  • CharUtils#isAsciiNumeric
    →引数で指定した文字が半角数字([0-9])である場合にtrueを返す。
  • 新着記事
  • 特集
  • ブログ