- - PR -
数字と文字の区別の方法を教えてください
1
| 投稿者 | 投稿内容 | ||||
|---|---|---|---|---|---|
|
投稿日時: 2003-09-30 16:11
下記のような時、変数A、Bどちらに数字が入っているかを調べる為の関数などはあるのでしょうか?
String A = "abc"; String B = "123"; | ||||
|
投稿日時: 2003-09-30 16:46
Javaの標準APIには存在しませんね。 下記のような感じで実装するか、commons等を使用してください。 //サンプル class NumberCheck{ public static void main(String[] args){ System.out.println(check1(args[0])); System.out.println(check2(args[0])); } //↓J2SDK1.4以降のみ private static boolean check1(String str){ return str.matches("[0-9]{"+str.length()+"}"); } private static boolean check2(String str){ for(int i=0;i<str.length();i++) if(str.charAt(i)<'0' || str.charAt(i)>'9') return false; return true; } } | ||||
|
投稿日時: 2003-09-30 17:27
そのものずばりはありませんが、例えばInteger#parseIntあるいはNumberFormat#parseで
例外が返ってくるかどうかでチェックすることはよくあります。 | ||||
|
投稿日時: 2003-09-30 17:46
public static boolean isNumber(String str) {
for(int i=0; i<str.length(); i++) { if(!Character.isDisit(str.charAt(i))) return false; } return true; } という感じでどうでしょうか? #この場合全角数字等も数字と判断してしまいますが… [ メッセージ編集済み 編集者: ジュニア 編集日時 2003-09-30 17:53 ] | ||||
|
投稿日時: 2003-09-30 18:17
整数であるとは限定していないので、
Double#parseDouble(String)に対する例外(NumberFormatException)チェックを行った方が良いのでは? # 例示内容からして、整数チェックで問題なさそう [ メッセージ編集済み 編集者: かずくん 編集日時 2003-09-30 18:32 ] | ||||
|
投稿日時: 2003-09-30 18:34
taku様、uk様、ジュニア様、かずくん様、ご意見ありがとうございました。
説明不足してました、JDK1.2使用です。 整数ではない場合は例外でチェックを行い、整数と決まっている場合は"isDisit"で確認できそうですね。 | ||||
|
投稿日時: 2003-10-01 01:55
やられたい内容が、JAVAよりも、Cの方がやりやすそうですが、getNumericValueを使用して、一つずつチェックしていったほうが良いような気がします。例外を出すのはあまり好きではないもので・・・。(浮動小数点までいれるとなると、ちょっとコードが長くなるので、ここでは割愛します。)多分、isDigitではやりにくいことをやられているような気がして、もう少し細かく見れるgetNumericValueの方が推薦できると思われ、これなら、浮動小数点もすべての文字として見れるから、大変便利(かな?)。(でも、小数点が出てきたときにそれなりにコードを組まないといけないですけどね。)
| ||||
1
