読者です 読者をやめる 読者になる 読者になる

Nullppo

メモ帳的なにか

Javaの数値チェックは何でやるか。。。

Javaで数値チェックと言って、
思いつくのは。。。。。

  1. org.apache.commons.lang.math.NumberUtils.isNumber(String str)
  2. org.apache.commons.lang.math.NumberUtils.isDigit(String str)
  3. org.apache.commons.lang.StringUtils.isNumeric(CharSequence cs)

かなー。

じゃあ、
それぞれの違いってなんだろ?
っていう初心者チックな疑問について調べてみた。


1.NumberUtils.isNumber(String str)

  2進数でも16進数でもjavaが解釈できる数値であれば「true
  NumberUtils#isNumberが数値として判定するのは以下の場合
  ・0xで始まる16進数表現
  ・数字のみでの数値表現(小数表現、負符号可)
  ・数値タイプ(long値の場合の末尾のLなど)が指定された数値表現(小数表現、負符号可)
  ・指数表現

2.NumberUtils.isDigit(String str)

  正の整数と0ならば「true
  0が先頭でも「true
  空は「false

3.StringUtils.isNumeric(CharSequence cs)

  正の整数と0ならばtrue
  0が先頭でもtrue
  空は「true


簡易表にしてみた

NumberUtils.isNumber NumberUtils.isDigit StringUtils.isNumeric
NULL("null") false false true
空("") false false true
ゼロ(0) true true true
正の整数(1) true true true
負の整数(-1) true false false
指数(2.5E-4) true false false
【全角】正の整数(1) false true true
【全角】負の整数(-1) false false false

(【TODO】まだ追加で書くかも)