Javaの数値チェックは何でやるか。。。
Javaで数値チェックと言って、
思いつくのは。。。。。
- org.apache.commons.lang.math.NumberUtils.isNumber(String str)
- org.apache.commons.lang.math.NumberUtils.isDigit(String str)
- 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】まだ追加で書くかも)