2011-04-06 49 views
3

我有這樣的代碼;String.Format相同的代碼不同的視圖

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

在我的電腦裏這個代碼給出了這樣的結果;

enter image description here

但當我這個代碼上傳到我的虛擬機,它看起來像這樣;

enter image description here

TL裝置土耳其里拉。但我不想顯示貨幣。我只是想要數字。

我也不想改變數字的格式。 (Like 257.579,02)

如何在此代碼中只刪除TL

+0

格尼爾:能否請您讓我知道鋤頭你有TL?我想以其他方式做,我想打印該TL符號。 – 62071072SP 2013-05-23 08:51:56

+0

@ 62071072這是我的默認貨幣符號(對於'tr-TR'文化)。我沒有做任何特別的事情。 – 2013-05-23 08:55:40

+0

Gonul:你能告訴我使用RegionInfo /當前的文化來獲得TL嗎? – 62071072SP 2013-05-23 09:08:18

回答

3

我這樣做:

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

背景:
這仍然將保持貨幣格式化當前的文化,它只是刪除了貨幣符號。
您可以將此特殊文化保存在某處,因此您無需在每次需要格式化值時創建該文化。

UPDATE:

  • 現在連編譯... ;-)
  • 增加了Trim(),因爲那裏仍是格式化數後的空間。
+1

+1是的,這聽起來有點冒失,但恐怕這是唯一的出路 – Larry 2011-04-06 08:03:01

+0

它完美的作品!謝謝。 – 2011-04-15 09:55:43

+0

勞倫你可以看看http://stackoverflow.com/questions/5712356/gridview-trim-error-in-asp-net? – 2011-04-19 06:23:18

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); 
0

因爲您只使用格式字符串的String.Format,所以根據應用程序中實際使用的UI文化格式設置sumKV。

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

爲了擺脫與貨幣符號,使用InvariantCulture的在String.Format這樣:

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

我建議,不要*使用這種方法,因爲它會丟棄當前文化的格式。 – 2011-04-06 07:52:01

0

如果你不希望顯示的貨幣則不要使用貨幣格式代碼 - {0: C}。 也許嘗試類似如下:

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

See this article - String.Format doubles

+0

這不考慮用戶是否配置了與正常數字不同的貨幣。 – 2011-04-06 07:59:59

相關問題