我正在尝试制作一个显示相当大数字(BigInteger large)的程序。为了方便用户,我将数字显示为字符串(1 000 000 = 1 百万)。我下面的代码显示了我当前的尝试。我的问题在于,我要替换的实际数字不会很好而且很圆。这个程序不需要显示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 Regex: replace all numeric values with one number。除了我不知道如何修改正则表达式来查找000 000
.