次のように、通貨値を含む任意のテキストがあるとします。
The price today is $1,234.56! Don't miss out!
セント数をとして抽出したいint
、つまり:
123456
いくつかの基準:
- 000のコンマはオプションです
- 価格は$1,000,000.00未満です
$
常にそこにあります- 小数部は常にそこにあります
パターンとマッチャーを使ってみましたが、面倒くさいようです。
これを行う最も簡単なコードは何ですか?
試す
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
parse to intを含むこの単一の行は、可能な限り簡潔であると思います。
int cents = Integer.parseInt(input.replaceAll(".*\\$((\\d+),)?(\\d+)\\.(\\d+).*", "$2$3$4"));