String.format("%1s","").equals("")); // --> return false !
String.format("%1s","").equals(" ")); // --> return true !
- 這是怎麼發生的?
- 空間從哪裏來?
String.format("%1s","").equals("")); // --> return false !
String.format("%1s","").equals(" ")); // --> return true !
你想添加的參數指標這樣
String.format("%1$s", ""); //returns ""
String.format("%2$s %1$s", "a", "b"); //returns "b a"
你的代碼中定義的「寬度」
String.format("%3s", ""); // returns " ";
String.format("%3s", "a"); // returns " a";
String.format("%-3s", "a"); // returns "a ";
閱讀此項更多信息: http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax
這裏%1s
是一個格式說明符,它沒有任何參數。爲無參數的格式說明的一般語法如下
%[flags][width]conversion
其中
可選標誌是一組修改的輸出格式的字符。有效標誌的集合取決於轉換。
和
可選寬度是一個非負十進制整數表示的最小字符數被寫入到輸出。
所以,1
指定寬度,這裏是爲什麼你" "
後面的描述,並且不""
的寬度將被寫入到輸出的最少字符數。如果轉換值的長度小於寬度,則輸出將被填充''(\ u0020'),直到字符的總數等於寬度。默認情況下,填充位於左側。如果給出' - '標誌,那麼填充將在右側。如果寬度沒有被指定,那麼沒有最小值。
PS:\ u0020爲Space
Unicode字符。
希望這會有所幫助。
你有看過['String.format'](http://docs.oracle.com/javase/7/docs/api/java/util/Formatter.html#syntax)的文檔嗎?此行爲與指定的完全相同。 –
我實際上對%1 $ s說明符感到困惑,它確實如指定的那樣。 – C4stor