0
我有以下長:201700112345
,我想將其轉換爲2017.001.12345
。String.format添加點到長/字符串
我知道我可以只使用一個子:
long l = 201700112345L;
String s = Long.toString(l);
String result = s.substring(0,4)+"."+s.substring(4,7)+"."+s.substring(7);
但我也有一個String.format
編輯做到這一點:..with單個輸入的String.format
方法的對象的可變參數的參數?
有些事情我已經試過:
String.format("%4d.%3d.%5d", l);
// Which resulted in:
java.util.MissingFormatArgumentException: Format specifier '%3d'
這是相當明顯的我知道,因爲我只有一個輸入,而不是三個..
我知道我可以使用原路返回到相同的輸入%1$
,所以我又試圖:
String.format("%4d.%1$3d.%1$5d", l);
// Which resulted in:
201700112345.201700112345.201700112345
我也試過了,這給了正確的長度,但不正確的部分:
String.format("%.4s.%1$.3s.%1$.5s", Long.toString(l));
// Which resulted in:
2017.201.20170
我必須承認我沒有經常使用String.format
,所以我不太確定是否可以將某種子字符串作爲格式。如果可能的話,我不出來..
「我還可以用String.format來實現」:String.format(「%s。%s。%s」,s.substring(0,4),s.substring(4, 7),s.substring(7))'。 –
也許像[這個SO問題](https://stackoverflow.com/questions/5114762/how-do-format-a-phone-number-as-a-string-in-java)可以幫助你(只是使用而不是破折號..) – Nino
@AndyTurner嘿嘿,是的,我知道這是可能的。 ;)編輯我的問題。 –