JavaでString型の数値チェック処理について質問です。
パースする前にString型の値が数字かどうかを判定するには、どんな方法がありますか?
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
回答3件
0
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
0
整数であるかどうかを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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/08/06 14:23
2017/06/14 02:03