Stringで取ってきたけどそれが数字のみの文字列かどうかを判断したい。

public boolean isNumberStr(String hoge) {
try {
Integer.parseInt(hoge);
return true;
} catch (NumberFormatException e) {
return false;
}
}

ストレートに組むとこうなる。
でも意図的にException発生させるっていうのが気持ち悪いなと思った。

public boolean isNumberStr(String hoge) {
Pattern p = Pattern.compile(“^[0-9]+$”);
Matcher m = p.matcher(hoge);
return m.find();
}

正規表現を使う場合、そういった気持ち悪さはなくなる。
ただ、私が正規表現苦手というのもあるけど、やっぱり正規表現って読み辛い。
ぶっちゃけこれで正しく判定できてるかも自信ない(テストしていません)。
間違ってたら恥ずかしいのでテストしてからPostしようとも思ったけど、この記事を書いてる環境にはJava開発環境を用意していないので、面倒臭い。

Integer.parseInt()を用いると、int型で扱えるもののみっていうのがわかりやすい。 つまり整数のみ。小数点はダメ。
小数点を含む数値にしたいなら、parseする場合は、double.parseDouble()にでもしてやればいい。でも正規表現だと・・・。

ひよっこプログラマーでもint型とかdouble型とかが扱える桁数はわかる。
正規表現を読み取るのは、正規表現を勉強しないと無理。そういった観点だと、意図的にException発生って気持ち悪いけど、やっぱりそっちの方が無難かな。