2016-10-03 130 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在这种情况下)。

相关问题