アプリ版:「スタンプのみでお礼する」機能のリリースについて

java.text.NumberFormat#parse(String)を使って、
(実際にはjava.text.DecimalFormatを使っています)
Stringからlongへの変換を行おうとしています。

その際、入力パターンとして符号つき整数を受け付け、
かつ符号がないときは正として扱おうとしていますが、
そのようなパターンの記述方法がわかりません。
負のときはいいんですが、正のときの場合において
+をつけなければいけないか、つけてはいけないか、
どちらかのパターンしか記述ができません。
Long#parseLong(String)も、+がついていると
java.lang.NumberFormatExceptionになってしまいました。

2つのパターンを用意して、java.text.ParseExceptionなら
もう片方のパターンで変換を行うという方法でなら
もちろん実現できるのですが、もし可能であれば
1回の変換で実現できる方法を知りたいです。
APIドキュメントを読んでもよくわかりませんでした。。。。

ご存じの方いらっしゃいましたら、ご教授下さい。

A 回答 (2件)

先行回答のような処理をするFormatterクラスを作ってしまえばどうでしょう?

    • good
    • 0
この回答へのお礼

回答ありがとうございました。
なるほど、Formatterクラスを作ってしまえば
細かい処理を隠蔽して呼ぶことができますね。
実際には、No.1で回答いただいたような細かい処理が
共通処理的な部分におくようになっているので
そこまでしなくても隠蔽化はできているのですが、
Formatterクラスを作るという発想は自分にはなかったので
なるほど…と思ってしまいました。
でも逆に言えば、DecimalFotmatではやはりできないってことですね。

お礼日時:2005/02/28 08:58

先頭1文字目が+なら除去してからパースじゃだめですか?


例外拾うよりはマシかと思いますが。

この回答への補足

回答ありがとうございます。
確かにそういった手を加えればできるんですが、
そういう形式を指定して一発でできる方法はないでしょうか?
ということなのです。
やっぱりないんでしょうかね…?

補足日時:2005/02/24 09:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!