2013-04-09 72 views
0

我試圖如下Java的字符串格式陣列

System.out.println("unique number is :"+ number[b]); 
System.out.println("unique number formatted to 28 is :"+ String.format("%-28s",number[b]).replace(' ','0')) 

有當「數字」是一個字符串是超過28較短沒有問題,格式化字符串,它增加了0的左邊,但是當字符串比28更長,它縮短了它,我做錯了什麼?

其從一個循環的提取物BTW

非常感謝

+1

你想如何縮短?通過縮小數字縮短數字通常沒有意義。 – 2013-04-09 07:55:57

回答

1

格式化不砍你String,它只是確保它至少使用28位。

你將不得不做這樣的事情:

if (str.length() > 28) { 
    str = str.subString(0, 28); 
} 

也許

if (str.length() > 28) { 
    str = str.subString(str.length() - 28, str.length()); 
} 

限制大小。

0

之所以format像您期望的工作不從的javadoc爲java.util.Formatter類清楚。它說:

「可選寬度是指示最小字符數要寫入到輸出一個非負十進制整數」。