2011-05-30 166 views
1

我知道我們可以離開墊整數與這樣的格式:如何用帶點的格式化程序保留整數?

String.format("%7d", 234); // " 234" 
String.format("%07d", 234); // "0000234" 
String.format("%015d", 234); // "0000000000000234" 

但是,如何通過點更換零(如純文本內容索引)?

String.format("%.13d", 234); // doesn't work 

我想產生這樣:

..........234 

我知道我可以使用一個循環來加點,但我想知道是否有一種方法有格式做到這一點。

+1

http://stackoverflow.com/questions/388461/padding-strings-in-java – grundprinzip 2011-05-30 21:15:14

回答

3

我覺得不存在這樣的.填充建立,但你可以墊用空格,然後替換它們。

String.format("%15d", 234).replaceAll(' ', '.'); 
1

有沒有辦法做單獨的格式,但

String.format("%015d", 234).replaceFirst("0*","\."); 

應該做的很好。

(當然,你要那麼做東西用字符串 - 這其中產生一個String對象,然後消失,因爲這不分配到任何東西。)

更新

媽,在正則表達式中忘記了重複*

+1

的可能的複製沒有,一點都沒有。 – 2011-05-30 21:21:46

+2

@Martijn,你將來可能會發現,你認爲你發現的錯誤會爲你提供很好的服務。 – 2011-05-30 21:34:19

+0

我發現沒有編譯的錯誤是:1)所有的零將被一個點代替。 2)'「\。」'是一個不存在的轉義字符。所以,如果你的意思是'\\。',它不會被點替換,而是直接用'\ .'。 – 2011-05-31 15:04:57

0

您可以手動完成。它不漂亮,但它的工作原理。

String str = Integer.toString(234); 
str = "...............".substring(0, Math.max(0, 15 - str.length())) + str; 
相關問題