commons-langで数値を判定する

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

 第3回はNumberUtilsの判定メソッド「isNumber」と「isDigits」を扱ってみよう。

NumberUtils#isNumber

 NumberUtils#isNumberは、引数で指定した文字が半角の数字([0-9])の場合にのみ真を返す。

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

  • NumberUtils.isNumber("111") = true
    →文字列が半角数字([0-9])のみで構成される場合にtrue
  • NumberUtils.isNumber(null) = false
    →nullを引数に指定した場合にはfalse
  • NumberUtils.isNumber("") = false
    →空文字列を引数に指定した場合にはfalse
  • NumberUtils.isNumber("112") = false
    →文字列が全角数字を含む場合にはfalse
  • NumberUtils.isNumber("11a1") = false
    →文字列がアルファベットを含む場合にはfalse
  • NumberUtils.isNumber("11-1") = false
    →文字列が記号を含む場合にはfalse
  • NumberUtils.isNumber("11 1") = false
    →文字列が半角スペースを含む場合にはfalse
  • NumberUtils.isNumber("11 1") = false
    →文字列が全角スペースを含む場合にはfalse
  • NumberUtils.isNumber("111\n") = false
    →文字列がコントロール文字を含む場合にはfalse

NumberUtils#isDigits

 同じNumberUtilsには「isDigits」というメソッドもある。こちらは指定した文字列が「半角数字」もしくは「全角数字」のみで構成される場合に真を返す。

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

  • NumberUtils.isDigits(null)) = false
  • NumberUtils.isDigits("") = false
  • NumberUtils.isDigits("111") = true
  • NumberUtils.isDigits("111") = true(!)
  • NumberUtils.isDigits("111") = true
  • NumberUtils.isDigits("11a1") = false
  • NumberUtils.isDigits("11-1") = false
  • NumberUtils.isDigits("11 1") = false
  • NumberUtils.isDigits("11 1") = false
  • NumberUtils.isDigits("111\n") = false

 全角数字の場合にも結果が真となる点で、NumberUtils#isNumberとは異なる。

 コード内に「isNumber」と「isDigits」の両方が存在する場合には特に混乱しがちなので注意が必要だ。

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