2017-02-09 18 views
2

我想格式化字符串並將其寫入文件。見下面在將字符串格式化爲特定精度時遇到問題

StringBuilder sb=new StringBuilder(); 
sb.insert(0, String.format("%-30s", recDataWithWarId.getRiaFirmName() != null ? recDataWithWarId.getRiaFirmName() : " ")); 

我想實現的條件我的代碼是(我已經在下面提到的條件1爲手柄):

  1. 如果recDataWithWarId.getRiaFirmName()的長度或空我還不到三字符想用空格填充剩餘的空格。

  2. 我還想限制recDataWithWarId.getRiaFirmName()爲30如果長度大於30,我希望這個代碼會自動執行。

什麼是實現這兩個條件,而無需編寫冗長的代碼一個字符串和一個格式化的最有效的方法是什麼?我必須在多個地方完成它,因爲這是一個相當大的文本文件。

+2

使用子字符串編寫函數。即使更長的代碼並不意味着它更慢。 – 2017-02-09 19:53:42

+0

並且在同一個註釋中:不要試圖在一行代碼中做太多事情,它不會讓你看起來更聰明,而且讀取,維護和調試確實更難。 – alfasin

回答

6

您需要在格式字符串中指定精度和寬度。你想"%-30.30s"

第一個-30指定該值將被填充在右側30個字符。小數點後的30指定最大字符數。

+0

謝謝@David Wallace。這是我正在尋找的賓果答案。 – shashwatZing

-2

我的建議不會讓字符串格式化和三元表達式變得太可愛。只需使用適當的字符串方法按摩數據,以便您有一個標準化的字符串可供顯示或記錄。

其實,我建議這正是像toString()getDisplayString()這樣的方法。

由於我們不知道「recDataWithWarId」是什麼,所以您可能無法做到這一點。但是,在使用它作爲輸出之前,你當然可以採取一個字符串並進行適當的調整。

+0

典型。提供來自多年來一直這樣做並獲得低價的人的真實建議。是的,你可以用String.format做到這一點。問題是你應該?在很多情況下,答案是否定的。 – jdv

相關問題