• ベストアンサー

DecimalFormatの形式について

java.text.NumberFormat#parse(String)を使って、 (実際にはjava.text.DecimalFormatを使っています) Stringからlongへの変換を行おうとしています。 その際、入力パターンとして符号つき整数を受け付け、 かつ符号がないときは正として扱おうとしていますが、 そのようなパターンの記述方法がわかりません。 負のときはいいんですが、正のときの場合において +をつけなければいけないか、つけてはいけないか、 どちらかのパターンしか記述ができません。 Long#parseLong(String)も、+がついていると java.lang.NumberFormatExceptionになってしまいました。 2つのパターンを用意して、java.text.ParseExceptionなら もう片方のパターンで変換を行うという方法でなら もちろん実現できるのですが、もし可能であれば 1回の変換で実現できる方法を知りたいです。 APIドキュメントを読んでもよくわかりませんでした。。。。 ご存じの方いらっしゃいましたら、ご教授下さい。

質問者が選んだベストアンサー

  • ベストアンサー
  • maical
  • ベストアンサー率83% (5/6)
回答No.2

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

osumitan
質問者

お礼

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

その他の回答 (1)

  • sasadora
  • ベストアンサー率68% (59/86)
回答No.1

先頭1文字目が+なら除去してからパースじゃだめですか? 例外拾うよりはマシかと思いますが。

osumitan
質問者

補足

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