Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 按照模板将长字符串转换为字符串_Java_String_Long Integer - Fatal编程技术网

Java 按照模板将长字符串转换为字符串

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

我有一个数字,必须按照模板转换为特定格式的字符串

模板为xxx.xxx.xxx-xx。例如,如果数字为94322467,则应将其转换为000.943.224-67

在Java中,正确的方法是什么

编辑 我最终使用的代码是@biziclop和@style答案的混合

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一起做了一个答案。谢谢