Java 按照模板将长字符串转换为字符串
我有一个数字,必须按照模板转换为特定格式的字符串 模板为xxx.xxx.xxx-xx。例如,如果数字为94322467,则应将其转换为000.943.224-67 在Java中,正确的方法是什么 编辑 我最终使用的代码是@biziclop和@style答案的混合Java 按照模板将长字符串转换为字符串,java,string,long-integer,Java,String,Long Integer,我有一个数字,必须按照模板转换为特定格式的字符串 模板为xxx.xxx.xxx-xx。例如,如果数字为94322467,则应将其转换为000.943.224-67 在Java中,正确的方法是什么 编辑 我最终使用的代码是@biziclop和@style答案的混合 DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols(); formatSymbols.setDecimalSeparator('-'); formatSymbols
DecimalFormatSymbols formatSymbols = new DecimalFormatSymbols();
formatSymbols.setDecimalSeparator('-');
formatSymbols.setGroupingSeparator('.');
DecimalFormat myFormatter = new DecimalFormat("000000,000.00", formatSymbols);
String cpfString = myFormatter.format(longNumber / 100.0);
这是一条路要走
虽然如果您的数字总是固定长度(即,如果它较短,则用零填充),但最好使用DecimalFormat
格式化普通数字(00000000000
是您的情况下的模式),并手动将分隔符插入已知的固定位置
不幸的是,DecimalFormat
无法处理任意数字分组,因此您必须手动插入分隔符
如果你的号码甚至不能保证是固定长度的,你就必须从头开始编写格式化程序。就是这样
虽然如果您的数字总是固定长度(即,如果它较短,则用零填充),但最好使用DecimalFormat
格式化普通数字(00000000000
是您的情况下的模式),并手动将分隔符插入已知的固定位置
不幸的是,DecimalFormat
无法处理任意数字分组,因此您必须手动插入分隔符
如果您的号码甚至不能保证为固定长度,则必须从头开始编写格式化程序。我会这样做:
long x = 123456789;
String s = String.format("%,d-%02d", x / 100, x % 100);
String out = ("000.000.000-00" + s.replace(",", ".")).substring(s.length());
System.out.println(out);
这会产生您想要的结果:
001.234.567-89
我会这样做:
long x = 123456789;
String s = String.format("%,d-%02d", x / 100, x % 100);
String out = ("000.000.000-00" + s.replace(",", ".")).substring(s.length());
System.out.println(out);
这会产生您想要的结果:
001.234.567-89
DecimalFormat(“000.000.000-00”)
和DecimalFormat(“###########-###”)都在模式中抛出错误多个十进制分隔符
。我将如何格式化它以满足我的需要?在java中是否没有自动的方式来实现这一点?这似乎是一个很常见的问题。在常规分组中显示数字是一个常见的问题,DecimalFormat支持这一点。我怀疑使用多个分组分隔符和不同的组长度是否是一个常见问题。此外,正如@style的回答所示,DecimalFormat(“000.000.000-00”)
和DecimalFormat(“############-##”)都会在模式中抛出错误多个十进制分隔符
。我将如何格式化它以满足我的需要?在java中是否没有自动的方式来实现这一点?这似乎是一个很常见的问题。在常规分组中显示数字是一个常见的问题,DecimalFormat支持这一点。我怀疑使用多个分组分隔符和不同的组长度是否是一个常见问题。另外,正如@style的回答所示,它可以相当容易地手动处理。对于1000000
,它会给我0000010.000-00
,但我需要000.0010.000-00
。除此之外,我需要它始终使用
,而不是,
。格式是否使用区域设置分隔符?因为如果它真的这样做了,波兰的某些人可能就不会这么做了(我估计他们使用空格作为千个分隔符)。我用你的和@biziclop one一起做了一个答案。感谢1000000
它给了我0000010.000-00
,但我需要000.0010.000-00
。除此之外,我需要它始终使用
,而不是,
。格式是否使用区域设置分隔符?因为如果它真的这样做了,波兰的某些人可能就不会这么做了(我估计他们使用空格作为千个分隔符)。我用你的和@biziclop one一起做了一个答案。谢谢