String.Format相同代码不同视图

时间:2011-04-06 07:39:16

标签: c# asp.net string-formatting currency money-format

我有这样的代码;

GridView1.FooterRow.Cells[11].Text = String.Format("{0:c}", sumKV)

在我的电脑中,这段代码给出了类似的结果;

enter image description here

但是当我将此代码上传到我的虚拟机时,它看起来像这样;

enter image description here

TL 表示土耳其里拉。但我不想显示货币。我只想要数字。

我也不想改变数字格式。 (如257.579,02)

我怎样才能删除此代码中的 TL

4 个答案:

答案 0 :(得分:3)

我会用这个:

var cultureWithoutCurrencySymbol = 
    (CultureInfo)CultureInfo.CurrentCulture.Clone();
cultureWithoutCurrencySymbol.NumberFormat.CurrencySymbol = "";
GridView1.FooterRow.Cells[11].Text = 
            String.Format(cultureWithoutCurrencySymbol, "{0:c}", sumKV).Trim();

背景:
这仍将保留当前文化的货币格式,它只是删除货币符号 您可以在某处保存这种特殊文化,因此您无需在每次需要格式化值时创建它。

更新:

  • 现在它甚至编译......; - )
  • 添加了Trim(),因为格式化后的数字后面仍有空格。

答案 1 :(得分:1)

另一种选择是完全关闭当前线程的货币符号:

private static NumberFormatInfo SetNoCurrencySymbol()
{
    CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
    NumberFormatInfo LocalFormat = (NumberFormatInfo)NumberFormatInfo.CurrentInfo.Clone();

    NumberFormatInfo ret = culture.NumberFormat;

    LocalFormat.CurrencySymbol = "";
    culture.NumberFormat = LocalFormat;

    // Add the culture to the current thread
    Thread.CurrentThread.CurrentCulture = culture;

    return ret;
} 

这样你就可以改变更少的代码。您可以随后将其更改回来:

 NumberFormatInfo origNumberFormat  = SetNoCurrencySymbol();

 string x = String.Format("{0:c}", 55);

 CultureInfo.CurrentCulture.NumberFormat = origNumberFormat;

 string y = String.Format("{0:c}", 55);

答案 2 :(得分:0)

因为您只使用带有格式字符串的String.Format,所以sumKV的格式根据应用程序中实际使用的UI Culture。

GridView1.FooterRow.Cells[11].Text = String.Format("{0:c}", sumKV),

要摆脱货币符号,请以String.Format方式使用InvariantCulture:

String.Format(CultureInfo.InvariantCulture, "{0:c}", sumKV);

答案 3 :(得分:0)

如果您不想显示货币,请不要使用货币格式代码 - {0:c}。 也许尝试以下内容:

GridView1.FooterRow.Cells[11].Text = String.Format("{0:G}", sumKV);

See this article - String.Format doubles