Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 分裂数千爪哇_Java_Regex_Formatting - Fatal编程技术网

Java 分裂数千爪哇

Java 分裂数千爪哇,java,regex,formatting,Java,Regex,Formatting,我想通过在字符串中添加一些逗号来拆分一些字符串。 例如: "1234" => "1,234" "12345" => "12,345" "123456" => "123,456" "1234567" => "1,234,567" "12345678" => "12,345,678" "123456789" => "123,456,789" 我可以有一个像“12345678912345678912345678912345678912345678912345678

我想通过在字符串中添加一些逗号来拆分一些
字符串。
例如:

"1234" => "1,234"
"12345" => "12,345"
"123456" => "123,456"
"1234567" => "1,234,567"
"12345678" => "12,345,678"
"123456789" => "123,456,789"
我可以有一个像“123456789123456789123456789123456789123456789123456789123456789123456789”这样的大字符串

目前,我将此代码与
DecimalFormat
一起使用,但由于我将其转换为double,因此我的数字限制在double的范围内,因此我需要找到另一种方法来避免此范围。我收到一个
字符串
,我想像字符串一样解析它,而不是数字(
整数
双精度
)。我想我可以用正则表达式或类似的东西,但我不知道怎么做

DecimalFormatSymbols symbols = new DecimalFormatSymbols();
symbols.setGroupingSeparator(',');
DecimalFormat df = new DecimalFormat("###,###", symbols);
formattedStr = df.format(Double.parseDouble(str));

要获得如此巨大的数字,必须使用bigingerBigDecimal。此代码段应该可以帮助您:

public static void main(String[] args) {
    BigInteger integer = BigInteger.valueOf(60000);

    String result = NumberFormat.getNumberInstance(Locale.US).format(
        integer);
    System.out.println(result);
}
产量:6万


祝你好运。

或者使用其他答案中提到的
biginger
,或者使用正则表达式,如下所示:

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位数字。

仅为整数?您稍后是否仅显示这些数字,或者是否正在使用它们?是的,但我可以有一个超过double范围的大数字,如12345678913456789123456789。这就是我需要改变的原因@RobbyCornelissen可以首先查看BigInteger类。当整数值对于long或int太大时,double不是一个好的解决方案。在字符串上向后迭代,并在每三个字符后插入一个逗号,以获得一个String。如何从字符串创建BigInteger?
新建BigInteger(str)
这是可能的。使用构造函数BigInteger(String val)将字符串的数字表示形式转换为BigInteger。有关更多信息,请浏览java文档。