2016-10-03 129 views
3

我無法添加空格來對齊小數。我理解這個邏輯,但是我不能把它寫入代碼。使用空格字符串對齊十進制值?

for(var j in totals_array) 
     { 
      var amount = format_numeric_with_commas(totals_array[j].amount); 
      var currency = totals_array[j].currency; 
      if(j < 1) 
      { 
       costs_total.push(currency + " " + amount + "\x0A"); 
      } 
      else 
       costs_total.push(currency + Array(0).join(" ") + amount + "\x0A"); 
     } 

totals_array包含許多看起來像這樣的對象。

{"currency":"AUD","amount":210543} 

format_numeric_with_commas給我在其中被存儲到變量amount適當的格式的量值。而currency取值爲貨幣,即GBP,USD等。if語句用於檢查它是否是數組中的第一個索引。因爲我已經把排名最高的值排序。所以我想要的是其他值與頂端數字的小數對齊。

我採用貨幣類型和值,並推入一個名爲costs_total的新數組。這是它目前的樣子。

當前佈局:

Current layout

我怎麼會去這樣做一個循環來檢查有多少空間所需的貨幣值的不同長度?

+0

@kukkuz你能幫忙嗎? –

+0

最容易做的事情我猜應該是有兩列布局......這樣你就可以對「數量」進行「文本對齊:正確」並且它將根據需要進行對齊......那麼,如果不是你要找的東西,你可以把一個片段,以便我們可以玩代碼?謝謝! – kukkuz

+0

@kukkuz我寧願這樣做。如果我也這樣做,那麼貨幣將不會根據價值的長度進行對齊。 –

回答

0

爲什麼不做這樣的事情呢? (實際文本/數字例子)

costs_total.push(String.Format("{0} {1,12:N}\x0A", "USD", 123456.0)); 
// "USD 123,456.00\n" 

costs_total.push(String.Format("{0} {1,12:N}\x0A", "AUD", 123.0));  
// "AUD  123.00\n" 

costs_total.push(String.Format("{0} {1,12:N}\x0A", currency, amount));  

你只需要找到適當的數字中最大的數數,設置寬度(12在這種情況下)。

相關問題