使用自定义分隔符将数字格式化为字符串? [复制]
Posted
技术标签:
【中文标题】使用自定义分隔符将数字格式化为字符串? [复制]【英文标题】:Format a number to string with custom separator? [duplicate] 【发布时间】:2019-12-20 07:58:58 【问题描述】:我想用下划线作为分隔符来格式化大数字。我曾希望可以使用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 = '_'
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
的输入以上是关于使用自定义分隔符将数字格式化为字符串? [复制]的主要内容,如果未能解决你的问题,请参考以下文章