かなり大きな数(BigIntegerが大きい)を表示するプログラムを作成しようとしています。ユーザーが使いやすいように、数字を文字列(1 000 000 = 1 Million)で表示しています。以下のコードは、私の現在の試みを示しています。私の問題は、私が交換する実際の数が良くて丸くないという事実にあります。このプログラムは、100%正確な値を表示する必要はなく、ボールパークの数値を表示します。IE:
1 234 567 = 1 Million
1 000 000 = 1 Million
1 934 234 = 1 Million
私の現在のコード(簡潔にするために短縮):
if (!displayNumbers) {
StringBuffer sb = new StringBuffer(_combinations);
String t = sb.reverse().toString();
Toast.makeText(getApplicationContext(), t, 1).show();
...
if (t.contains("000 000 000 000 000")) {
t.replace("000 000 000 000 000", "quadrillion");
}
if (t.contains("000 000 000 000")) {
t.replace("000 000 000 000", "trillion");
}
if (t.contains("000 000 000")) {
t.replace("000 000 000", "billion");
}
if (t.contains("000 000")) {
t.replace("000 000", "million");
}
sb = new StringBuffer(t);
_combinations = sb.reverse().toString();
}
ゼロを置き換えるという方針に沿って、対応する単語を#'s
検索しx lots of 3 digits
て置き換えるように考えていましたが、これを実装する方法がわかりません。million, billion, etc
また、現在、最終的な出力文字列でスペルト小麦が逆になっていることにも注意してください。
編集:英国の読者のために、私が米国の定義を使用していることに注意する必要があり*illions
ます。
編集2:もう少しグーグルをしていてこれを見つけました-java正規表現:すべての数値を1つの数値に置き換えます。を見つけるために正規表現を変更する方法がわからないことを除いて000 000
。