0

次のように、通貨値を含む任意のテキストがあるとします。

The price today is $1,234.56! Don't miss out!

セント数をとして抽出したいint、つまり:

123456

いくつかの基準:

  • 000のコンマはオプションです
  • 価格は$1,000,000.00未満です
  • $常にそこにあります
  • 小数部は常にそこにあります

パターンとマッチャーを使ってみましたが、面倒くさいようです。

これを行う最も簡単なコードは何ですか?

4

2 に答える 2

3

試す

    String s = "The price today is $1,234.56! Don't miss out!";
    Pattern p = Pattern.compile("\\$(((\\d+,?\\d++)|(\\d++))\\.?\\d\\d)");  
    Matcher m = p.matcher(s);
    m.find();
    Long cents = Long.parseLong(m.group(1).replaceAll("[,.]", ""));
    System.out.println(cents);

プリント

123456
于 2012-12-28T11:40:39.120 に答える
2

parse to intを含むこの単一の行は、可能な限り簡潔であると思います。

int cents = Integer.parseInt(input.replaceAll(".*\\$((\\d+),)?(\\d+)\\.(\\d+).*", "$2$3$4"));
于 2012-12-28T12:37:51.033 に答える