- - PR -
String型の数
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-10-27 00:11
String型のオブジェクトが渡された時、その内容が文字列か数かを判定する
ようなことは可能でしょうか。 文字列か数かによってその後の処理を分岐させることができないものかと 考えております。 なにか良いお知恵がありましたらお願いします。 | ||||||||
|
投稿日時: 2006-10-27 00:17
その文字列を数値に変換する。
エラーが発生せずに変換できたら、そのまま数値として処理を続ける。 NumberFormatExceptionが発生したら、文字列として処理をする。 で、いいんでないの? <追記> typoを修正。orz [ メッセージ編集済み 編集者: さいくろう 編集日時 2006-10-27 00:29 ] | ||||||||
|
投稿日時: 2006-10-27 00:21
私なら実際にパースしてみますね。
後は正規表現での判定でしょうか。 String#matches(1.4以降)を使用できそうです。 かぶっちゃいました。。。 [ メッセージ編集済み 編集者: 暁 編集日時 2006-10-27 00:23 ] | ||||||||
|
投稿日時: 2006-10-27 00:46
迅速な回答ありがとうございます。
実は例外の発生によって判定する、ということも考えてはみた のですがあまりプログラミングに精通している方ではないので、 そういう手法を使ってよいものかちょっと頭を悩ましていたのです。 正規表現での判定というものもあるのですね。 (正規表現自体よく分かってはいませんが・・・。) 調べてみたところ public boolean matches(String regex) を使うことで目的を果たすことができそうです。 | ||||||||
|
投稿日時: 2006-10-27 01:01
自分も
みたいに書くことが多いです。 そもそも、何を基準に数値として判断するかが問題です。 Javaの基準に合わせるなら、JavaのAPIに任せてしまうのが一番楽だと思います。 | ||||||||
|
投稿日時: 2006-10-27 01:19
蛇足になりますが、自分はJakarta Commons Langにある以下のようなクラスを使っています。
http://jakarta.apache.org/commons/lang/api-release/org/apache/commons/lang/NumberUtils.html | ||||||||
|
投稿日時: 2006-10-27 07:43
これは知りませんでした。 勉強になりました。 正規表現を使いたいような用途にはこちらを使用するのが楽かも。 NumberUtils#isNumberが数値として判定するのは以下の場合のようです。 ・0xで始まる16進数表現 ・数字のみでの数値表現(小数表現、負符号可) ・数値タイプ(long値の場合の末尾のLなど)が指定された数値表現(小数表現、負符号可) ・指数表現 | ||||||||
|
投稿日時: 2006-10-27 09:00
Deprecatedとなっているようですが…
バージョン3.0からはからは削除される予定、とありますね。 |