Java 是否使用自定义分隔符将数字格式化为字符串?

Java 是否使用自定义分隔符将数字格式化为字符串?,java,formatting,Java,Formatting,我想用下划线作为分隔符格式化大数字。我曾希望可以使用String.format或DecimalFormat。 例如: int number = 1234567; String str1 = String.format("%,d", number); System.out.println(str1); // out puts 1,234,567 但将逗号改为下划线 String str = String.format("%_d", number); 导致异常 UnknownFormatCo

我想用下划线作为分隔符格式化大数字。我曾希望可以使用
String.format
DecimalFormat
。 例如:

int number = 1234567;
String str1 = String.format("%,d", number);
System.out.println(str1);  // out puts  1,234,567
但将逗号改为下划线

String str = String.format("%_d", number);
导致异常

UnknownFormatConversionException:Conversion=''


所需输出1_234_567

您可以使用
十进制格式。有关更多信息,请参阅。您必须在formatter对象上将分隔符设置为“\u1”。例如:

    DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setGroupingSeparator('_');
    symbols.setGroupingUsed(true);

    DecimalFormat df = new DecimalFormat("#######", symbols);
    df.setGroupingSize(3);

    String out = df.format(1234567);

1.使用逗号分隔符将数字格式化为字符串。2.用“.”代替“,”。@rossum我自己没想到这件事,真是太愚蠢了。让它使用
String.format(“%,d”,number)。替换('.',''.')
非常感谢。这确实是我一直在寻找的正确答案,因为我想对一个数字应用一种奇怪的格式,而“副本”中的答案并没有涵盖我的问题。带有
符号。setGroupingSeparator(“”);符号。设置小数分隔符(“|”)
新的十进制格式(“符号”)
现在我可以输出类似于
12_345|67
的内容,用于
12345.67
    DecimalFormatSymbols symbols = new DecimalFormatSymbols();
    symbols.setGroupingSeparator('_');
    symbols.setGroupingUsed(true);

    DecimalFormat df = new DecimalFormat("#######", symbols);
    df.setGroupingSize(3);

    String out = df.format(1234567);