我正在阅读一系列硬编码的数字字符串 - 所有位置都填充了一个字符,即使对于前导零也是如此。因此,可以使用substring(start,end)自信地解析它以转换为数字。
示例:“0123 0456 0789”
然而,来自数据库的字符串不会填充带有“零字符”的前导零,它只是取出'123 456 789',这对于算术数字是正确的但不符合我的需要并且解决问题。
在编写条件以检查前导零并在需要时将它们添加到字符串之前,是否有一种简单的方法来指定它们是否填充了字符?我在Java书中找不到这个......
我可以在发布这篇文章的时候完成三个条件,但这更多是关于'教育'...
由于
答案 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);