java字符串格式方法

时间:2013-08-20 11:51:44

标签: java string-formatting

我想要的是获取数字的前2位数字。如果数字没有大于1的数字,那么它将添加前导零。

s变量等于“122”,但我想获得前2位数字“12”。我认为我的格式存在问题。

例如,如果totalNumberOfCars等于6,那么s变量将等于“06”。

int totalNumberOfCars = 122;
String s = String.format("%02d", (totalNumberOfCars + 1))

编辑:有没有人知道String.format(“%02d”,totalNumberOfCars)的作用?

3 个答案:

答案 0 :(得分:2)

我担心String.format()无法完成这项工作,请参阅http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax

但是你的格式字符串将是子字符串的一个很好的起点,因为任何ifs都是不必要的:

int totalNumberOfCars = 122;
String s = String.format("%02d", (totalNumberOfCars + 1));
s = s.substring(0,2);

顺便说一下上面javadoc链接的浓缩解释:

  

与参数不对应的格式说明符具有以下语法:

  %[flags][width]conversion

[...]在同一页面上进一步向下:

  

标志   '0'[...] [表示]零填充

[...]在同一页面上进一步向下:

  

宽度

     

宽度是要写入输出的最小字符数。对于行分隔符转换,宽度不适用;如果提供,将抛出异常。

示例输出将是:

1  --> 01
-1 --> -1
10 --> 10
122--> 122

答案 1 :(得分:0)

也许不是很优雅,但应该有效:

String s = ((totalNumberOfCars<10?"0":"")+totalNumberOfCars).substring(0,2);

答案 2 :(得分:-1)

String s = substring_safe(s,0,2);

static String substring_safe(String s,int start,int len){...} 这将预先检查长度并相应地采取行动(返回较小的字符串或带空格的垫)。