3

我有这样的代码;

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

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

在此处输入图像描述

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

在此处输入图像描述

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

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

我怎样才能只删除这段代码中的TL ?

4

4 回答 4

3

我会用这个:

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

背景:
这仍将保留当前文化的货币格式,它只是删除了货币符号。
您可以将这种特殊的文化保存在某个地方,这样您就不必在每次需要格式化您的价值观时都创建它。

更新:

  • 现在它甚至可以编译... ;-)
  • 加了Trim(), 因为格式化后的数字后面还有一个空格。
于 2011-04-06T07:47:20.987 回答
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);
于 2011-04-06T07:44:37.570 回答
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);
于 2011-04-06T07:49:42.273 回答
0

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

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

请参阅这篇文章 - String.Format 双打

于 2011-04-06T07:54:57.777 回答