字符串 - 用零点填充前导零

时间:2011-01-13 22:33:34

标签: java string

我正在阅读一系列硬编码的数字字符串 - 所有位置都填充了一个字符,即使对于前导零也是如此。因此,可以使用substring(start,end)自信地解析它以转换为数字。

示例:“0123 0456 0789”

然而,来自数据库的字符串不会填充带有“零字符”的前导零,它只是取出'123 456 789',这对于算术数字是正确的但不符合我的需要并且解决问题。

在编写条件以检查前导零并在需要时将它们添加到字符串之前,是否有一种简单的方法来指定它们是否填充了字符?我在Java书中找不到这个......

我可以在发布这篇文章的时候完成三个条件,但这更多是关于'教育'...

由于

5 个答案:

答案 0 :(得分:2)

更简单的方法是使用string.split()分隔数字,而不是拉出特定的字符索引。

答案 1 :(得分:2)

String.format(“%010d”,number); 要么 fromDB.replaceAll(“”,“0”); 或者甚至可能更好,将其修复到数据库中。

答案 2 :(得分:1)

来自StringUtils的{​​{1}}可能对您有用:

org.apache.commons.lang

答案 3 :(得分:0)

简单的正则表达方式:

String input = "123 456 789";
String output = input.replaceAll("\\b[1-9]\\d*", "0$0");
System.out.println(output); //prints "0123 0456 0789"

这将替换所有由任何数字组成的“单词”,但以1-9(非0)开头,并带有相同的单词,前缀为0。

我同意其他评估,你应该使用像String.split()这样的东西来解析不那么脆弱,而不是要求固定的宽度。

答案 4 :(得分:0)

另一种方法是使用DecimalFormat:

DecimalFormat df = new DecimalFormat("####")'

String fourDigitString = df.format(numberFromDB);