使用自定义分隔符将数字格式化为字符串? [复制]

Posted

技术标签:

【中文标题】使用自定义分隔符将数字格式化为字符串? [复制]【英文标题】:Format a number to string with custom separator? [duplicate] 【发布时间】:2019-12-20 07:58:58 【问题描述】:

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

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 = '_'

DecimalFormat decimalFormat = new DecimalFormat("#_###");
String str2 = decimalFormat.format(number);
System.out.println(str2); // out puts 1234567_

期望输出 1_234_567

【问题讨论】:

1.将数字格式化为带有逗号分隔符的字符串。 2. 将 ',' 替换为 '_'。 @rossum 自己不去想这件事真是太愚蠢了。让它与String.format("%,d", number).replace('.', '_')一起工作 【参考方案1】:

您可以使用DecimalFormat。请参阅documentation 了解更多信息。您必须在格式化程序对象上将分隔符设置为“_”。例如:

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

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

    String out = df.format(1234567);

【讨论】:

非常感谢。这确实是我一直在寻找的正确答案,因为我想对数字应用一种奇怪的格式,而“重复”中的答案并未涵盖我的问题。使用symbols.setGroupingSeparator('_'); symbols.setDecimalSeparator('|'); new DecimalFormat("####,###.##", symbols); 现在我可以输出12_345|67 之类的内容作为12345.67 的输入

以上是关于使用自定义分隔符将数字格式化为字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

ActionScript 3 将数字格式化为字符串 - 使用小数和千位分隔符

将数字格式化为字符串-带小数和千位分隔符

java Format啥意思

DecimalFormat详解

如何在java中将十进制数字格式化为两个小数点? [复制]

如何在 Dart 中将数字格式化为千位分隔符