以数字.ToString()格式包含HTML

时间:2016-03-06 03:00:58

标签: c# asp.net asp.net-mvc string-formatting

有关背景信息,请参阅this issue。我正在努力让以下内容排成一行:

   $ 123.00
($ 3,231.99)
     $ 0.82

我已经通过在格式字符串中插入一个unicode来完成它。但是,nbsp与宽度不同。

有没有什么办法可以在格式字符串中包含HTML并让它被正确解释?我正在使用带有Razor ViewEngine的ASP.NET MVC。

我目前正在使用以下内容进行转换:

Value.ToString("$ #,0.00;($ #,0.00);");

我添加了这样的(非常接近):

Value.ToString("$ #,0.00\u00A0;($ #,0.00);");

我正在考虑这样的事情,使其与每种字体完美对齐:

Value.ToString("$ #,0.00<span class='color:transparent;'>)</span>;($ #,0.00;");

思想?

2 个答案:

答案 0 :(得分:2)

要真正解决问题,我只会使用表格。关于这个解决方案的好处是所有列都具有相等的宽度。

table{
  border-collapse: collapse;
  }
table tr td{
  text-align: right
  }
<table>
  <tr>
    <td></td>
    <td>$</td>
    <td>123.00</td>
  </tr>
  <tr>
    <td>(</td>
    <td>$</td>
    <td>3,231.99</td>
    <td>)</td>
  </tr>
  <tr>
    <td></td>
    <td>$</td>
    <td>0.82</td>
  </tr>
</table>

答案 1 :(得分:0)

作为多列表答案的替代方法,您可以为数字列使用等宽字体和右对齐文本,然后正数末尾的空格应与负数的右侧对齐。

以下是等宽字体系列的示例。 http://www.w3schools.com/cssref/css_websafe_fonts.asp

“Courier New”,Courier,monospace

“Lucida Console”,摩纳哥,monospace

注意:搜索互联网可能会引导您<TD align="char" char="." >。请勿使用此align = char选项,因为HTML5不支持此选项。