- PR -

String型の数

投稿者投稿内容
レオ
常連さん
会議室デビュー日: 2006/10/14
投稿数: 21
投稿日時: 2006-10-27 00:11
String型のオブジェクトが渡された時、その内容が文字列か数かを判定する
ようなことは可能でしょうか。

文字列か数かによってその後の処理を分岐させることができないものかと
考えております。

なにか良いお知恵がありましたらお願いします。
さいくろう
大ベテラン
会議室デビュー日: 2005/11/19
投稿数: 170
お住まい・勤務地: 川崎市
投稿日時: 2006-10-27 00:17
その文字列を数値に変換する。
エラーが発生せずに変換できたら、そのまま数値として処理を続ける。
NumberFormatExceptionが発生したら、文字列として処理をする。
で、いいんでないの?

<追記>
typoを修正。orz

[ メッセージ編集済み 編集者: さいくろう 編集日時 2006-10-27 00:29 ]
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2006-10-27 00:21
私なら実際にパースしてみますね。
後は正規表現での判定でしょうか。
String#matches(1.4以降)を使用できそうです。

かぶっちゃいました。。。

[ メッセージ編集済み 編集者: 暁 編集日時 2006-10-27 00:23 ]
レオ
常連さん
会議室デビュー日: 2006/10/14
投稿数: 21
投稿日時: 2006-10-27 00:46
迅速な回答ありがとうございます。

実は例外の発生によって判定する、ということも考えてはみた
のですがあまりプログラミングに精通している方ではないので、
そういう手法を使ってよいものかちょっと頭を悩ましていたのです。

正規表現での判定というものもあるのですね。
(正規表現自体よく分かってはいませんが・・・。)

調べてみたところ
public boolean matches(String regex)
を使うことで目的を果たすことができそうです。
かつのり
ぬし
会議室デビュー日: 2004/03/18
投稿数: 2015
お住まい・勤務地: 札幌
投稿日時: 2006-10-27 01:01
自分も
コード:
try{
    Integer.parseInt(str);
    return true;
}catch(NumberFormatException e){
    return false;
}


みたいに書くことが多いです。

そもそも、何を基準に数値として判断するかが問題です。
Javaの基準に合わせるなら、JavaのAPIに任せてしまうのが一番楽だと思います。
K
大ベテラン
会議室デビュー日: 2004/04/07
投稿数: 174
投稿日時: 2006-10-27 01:19
蛇足になりますが、自分はJakarta Commons Langにある以下のようなクラスを使っています。
http://jakarta.apache.org/commons/lang/api-release/org/apache/commons/lang/NumberUtils.html
大ベテラン
会議室デビュー日: 2006/06/28
投稿数: 116
投稿日時: 2006-10-27 07:43
引用:
蛇足になりますが、自分はJakarta Commons Langにある以下のようなクラスを使っています。


これは知りませんでした。
勉強になりました。
正規表現を使いたいような用途にはこちらを使用するのが楽かも。

NumberUtils#isNumberが数値として判定するのは以下の場合のようです。
・0xで始まる16進数表現
・数字のみでの数値表現(小数表現、負符号可)
・数値タイプ(long値の場合の末尾のLなど)が指定された数値表現(小数表現、負符号可)
・指数表現
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2006-10-27 09:00
引用:

mogeさんの書き込み (2006-10-27 01:19) より:
蛇足になりますが、自分はJakarta Commons Langにある以下のようなクラスを使っています。
http://jakarta.apache.org/commons/lang/api-release/org/apache/commons/lang/NumberUtils.html



Deprecatedとなっているようですが…

引用:

Deprecated. Moved to org.apache.commons.lang.math. Class will be removed in Commons Lang 3.0.



バージョン3.0からはからは削除される予定、とありますね。

スキルアップ/キャリアアップ(JOB@IT)