【问题标题】: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('.', '_')一起工作

标签: java formatting


【解决方案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 的输入
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-04
  • 2014-07-09
  • 2013-03-28
  • 2013-03-03
相关资源
最近更新 更多