java.util.Formatter救援:
的格式化可以左對齊文本打印,你可以寬度分配給它,所以它將填充空格的文本,使其佔用所有所需的寬度,然後您只需用點替換空格即可。這裏有一個例子:
import java.util.*;
public class Test
{
public static final synchronized strictfp void main(String[] args)
{
Map<String, Double> myData = new LinkedHashMap<String, Double>();
myData.put("Total", 24.0);
myData.put("App", 24.0);
myData.put("USB storage app", 0.0);
myData.put("Data", 0.0);
myData.put("SD card", 0.0);
for(Map.Entry myEntry : myData.entrySet())
{
Formatter myFormatter = new Formatter();
myFormatter.format("%1$-20s%2$15.2fKB", myEntry.getKey(), myEntry.getValue());
System.out.println(myFormatter.toString().replace(' ', '.'));
}
}
}
這裏的有趣的部分是格式字符串:左邊的第一個參數($ 1)
%1$-20s
打印對齊( - ),用20個字符的最大寬度(20 )作爲一個字符串。
%2$15.2fKB\n
打印的第二個參數($ 2),用15個字符(15)和2個小數點(0.2),爲浮動(F)一個最大寬度。
這意味着第一個值將始終固定爲20個字符,第二個值將始終固定爲15個字符。然後,所有行將始終爲35個字符+ KB後綴+浮點數的小數點。
以上代碼生成的輸出:
Total.........................24.00KB
App...........................24.00KB
USB.storage.app................0.00KB
Data...........................0.00KB
SD.card........................0.00KB
TODO:不要在第一列的名字覆蓋合法的空間;)
不幸的是這個答案是行不通的,因爲9-補丁會拉伸,而不是增加對之間的點數 –
是的,剛剛意識到我也更新了我的答案,並建議使用xml形狀定義創建的重複位圖 – WarrenFaith
k!必須試試這個... –