我想通过在其中添加一些逗号来分隔String
。
例如:
"1234" => "1,234"
"12345" => "12,345"
"123456" => "123,456"
"1234567" => "1,234,567"
"12345678" => "12,345,678"
"123456789" => "123,456,789"
我可以有一个很大的字符串,例如“ 123456789123456789123456789123456789123456789”
当前,我将此代码与DecimalFormat
一起使用,但是由于我将其强制转换为double,所以我的数字限制为Double的范围,因此我需要找到另一种避免此范围的方法。我收到一个String
,我想像字符串一样解析它,而不是数字(Integer
,Double
)。我想我可以使用正则表达式或类似的东西,但是我不知道该怎么做。
DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
DecimalFormat df = new DecimalFormat("###,###", symbols);
formattedStr = df.format(Double.parseDouble(str));
答案 0 :(得分:2)
要么使用其他答案中提到的BigInteger
,要么使用如下正则表达式:
public class Test {
public static void main(String[] args) {
String s = "12345678912345678912345678";
String formatted = s.replaceAll("(\\d)(?=(\\d{3})+$)", "$1,");
System.out.println(formatted); // 12,345,678,912,345,678,912,345,678
}
}
表达式将在所有数字之后附加一个逗号,然后再跟一组至少3位数字。
答案 1 :(得分:1)
要拥有如此庞大的数字,您将必须使用 BigInteger 或 BigDecimal 。此代码段应为您提供帮助:
public static void main(String[] args) {
BigInteger integer = BigInteger.valueOf(60000);
String result = NumberFormat.getNumberInstance(Locale.US).format(
integer);
System.out.println(result);
}
输出:60,000
祝你好运。