
JavaでString型の数値チェック処理について質問です。
パースする前にString型の値が数字かどうかを判定するには、どんな方法がありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもマイページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
下記のような質問は推奨されていません。
- 質問になっていない投稿
- スパムや攻撃的な表現を用いた投稿
適切な質問に修正を依頼しましょう。
回答3件
15
String型の値が数値かどうかチェックする方法としてぱっと思いつくのは以下の3つですね。
(1)数値のパース処理をtry-catchで囲って例外が出るかで判定
lang
1public boolean isNumber(String num) { 2 try { 3 Integer.parseInt(num); 4 return true; 5 } catch (NumberFormatException e) { 6 return false; 7 } 8} 9
(2)数値の正規表現にマッチするかどうかで判定
※正規表現の部分は想定する数値により書き方が変わるのでご注意ください。
lang
1public boolean isNumber(String num) { 2 String regex = "^\-?[0-9]*.?[0-9]+$"; 3 Pattern p = Pattern.compile(regex); 4 Matcher m = p.matcher(num); 5 return m.find(); 6}
(3)Apache Commons Lang ? NumberUtils のAPIを使う
lang
1public boolean isNumber(String num) { 2 return NumberUtils.isNumber(num); 3} 4
※NumberUtilsを使う場合は公式サイトからjarをダウンロードしてください。
◆Apache Commons Lang(ダウンロード)
http://commons.apache.org/proper/commons-lang/download_lang.cgi
◆NumberUtils(API)
http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/math/NumberUtils.html
投稿2014/11/10 02:30
総合スコア197
1
整数であるかどうかをCharacter#isDigit()メソッドでチェックする方法もあります。
java
1 private static boolean check(String s) { 2 boolean isDigit = true; 3 4 int startIndex = s.charAt(0) == '-' ? 1 : 0; 5 for (int i = startIndex; i < s.length(); i++) { 6 isDigit = Character.isDigit(s.charAt(i)); 7 if (!isDigit) { 8 break; 9 } 10 } 11 12 return isDigit; 13 }
投稿2016/08/25 06:20
編集2016/12/30 11:54総合スコア452
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
回答へのコメント

0
投稿2014/11/10 02:45
総合スコア1356
下記のような回答は推奨されていません。
- 質問の回答になっていない投稿
- スパムや攻撃的な表現を用いた投稿
このような回答には修正を依頼しましょう。
関連した質問
Q&A
受付中
JavaでString型の値が数値であるかをチェックするには?
回答3
クリップ7
更新
2022/01/12
Q&A
解決済
コンパイルエラーの修正について
回答2
クリップ0
更新
2023/03/22
Q&A
解決済
checkboxを使った絞り込み検索 or検索からand検索に変更
回答1
クリップ0
更新
2023/03/28
Q&A
解決済
GASのfor文で繰り返すと1回目で時間フォーマットが合わないとエラーになる
回答2
クリップ0
更新
2023/03/28
Q&A
解決済
Javaの文字列結合時、nullの場合に文字列結合の対象から外したい
回答4
クリップ0
更新
2023/03/13
意見交換
受付中
gasを利用した予約サイトの設計について相談です
回答3
クリップ1
更新
2023/03/27
Q&A
受付中
被らずに整数を表示させる方法知りたいです。
回答5
クリップ0
更新
2023/03/19
Q&A
解決済
1986-1-12 00:00:00.0 と出力されてしまうのを, SimpleDateFormat("yyyy-MM-dd");のパターンに直したい
回答2
クリップ0
更新
2023/03/24
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2016/08/06 14:23
2017/06/14 02:03