2011-05-30 78 views
5

我知道我可以使用帶有空格填充:填充串0的使用格式

String.format("%6s", "abc"); // ___abc (three spaces before abc 

,但我似乎無法找到如何產生的:

000abc 

編輯:

在詢問之前,我嘗試了%06s。在更多(未嘗試)答案出現之前讓你知道。

目前我有:String.format("%6s", data).replace(' ', '0')但我認爲必須有更好的方法。

+2

順便說一句,在問這個問題之前,我使用了'%06s',只是在更多(未嘗試)答案出現之前讓你知道。 – OscarRyz 2011-05-30 19:59:09

回答

-1

I think this is what you're looking for.

String.format("%06s", "abc"); 
+3

-1這是數字,而不是字符串。 – MByD 2011-05-30 19:58:06

+0

這個怎麼樣? http://stackoverflow.com/questions/388461/padding-strings-in-java/388482#388482 – 2011-05-30 20:02:22

5

你真的應該考慮使用StringUtils從阿帕奇共享郎這樣的字符串操作任務,你的代碼就會變得更具有可讀性。你的例子是StringUtils.leftPad("abc", 6, ' ');

0

快速和骯髒的(設置「000 .... 00」字符串的長度作爲最大len個大家支持):

public static String lefTpadWithZeros(String x,int minlen) { 
    return x.length()<minlen ? 
     "000000000000000".substring(0,minlen-x.length()) + x : x;  
} 
1

嘗試滾動自己的靜態實用方法

public static String leftPadStringWithChar(String s, int fixedLength, char c){ 

    if(fixedLength < s.length()){ 
     throw new IllegalArgumentException(); 
    } 

    StringBuilder sb = new StringBuilder(s); 

    for(int i = 0; i < fixedLength - s.length(); i++){ 
     sb.insert(0, c); 
    } 

    return sb.toString(); 
} 

,然後用它,因爲這樣的

System.out.println(leftPadStringWithChar("abc", 6, '0')); 

OUTPU牛逼

000abc 
1

通過一切手段,找到這樣的東西,你喜歡一個圖書館和學習,所以你重新發明輪子少(有時有單位)什麼在你閃亮的新的工具箱。我更喜歡Guava到Apache Commons。在這種情況下,它們是等效的:

Strings.padStart("abc",6,'0');