LoginSignup
21
25

More than 5 years have passed since last update.

NumberUtilsのisNumberとisDigitの違い

Last updated at Posted at 2015-03-05

Webページの入力フォームやAPIのパラメータなどが数値かどうか判定したい時は多々ある。
そんな時いつも、何使うんだっけ、NumberUtilsのあれだよほら、クラス名と2つのメソッド名までは出てくるのだが、どっちがどういうのなんだっけ?となってしまうので備忘録として残しておくことにする。

NumberUtilsクラスを使う

org.apache.commons.lang.math.NumberUtilscommons-lang等に含まれている。
maven の場合は以下をpom.xmlに記述することで使用可能となる。

<dependency>
    <groupId>commons-lang</groupId>
    <artifactId>commons-lang</artifactId>
    <version>2.6</version>
</dependency>

NumberUtils.isNumberとNumberUtils.isDigitの違い

NumberUtils.isNumber(String str)

public static boolean isNumber(String str)

10進数以外も数値であればtrueを返す

ポイント:javaが数値として解釈できるものであればtrue

つまり2進数でも16進数でもjavaが解釈できるので数値である

NumberUtils.isDigit(String str)

public static boolean isDigits(String str)

ざっくり言うと、10進数の整数ならtrueを返す

ポイント:整数(自然数と0)ならばtrue

digitの意味通り、指で数えられるような数値

まとめ

人間も2進数や16進数を解釈しようと思えば出来なくはないですが、
大根買うのに使わないよね!、という前提で大抵はNumberUtils.isDigitを使って
(人間が入力した)数値かどうかのチェックをすればよいのではないかと思います。

おまけ

StringUtils.isNumeric(CharSequence cs)ってのもあるようです。

public static boolean isNumeric(CharSequence cs)

StringUtils.isNumeric(null)   = false
StringUtils.isNumeric("")     = false
StringUtils.isNumeric("  ")   = false
StringUtils.isNumeric("123")  = true
StringUtils.isNumeric("12 3") = false
StringUtils.isNumeric("ab2c") = false
StringUtils.isNumeric("12-3") = false
StringUtils.isNumeric("12.3") = false
StringUtils.isNumeric("-123") = false
StringUtils.isNumeric("+123") = false
21
25
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
21
25