Dot-Net

如何在只讀 CultureInfo.NumberFormat 上設置 CurrencySymbol?

  • October 24, 2018

我正在嘗試使用與預設 .Net 文化 (SFr.) 不同的符號 (CHF) 格式化貨幣 (Swiss Frank – de-CH)。問題是該區域性的 NumberFormat 是只讀的。

有沒有使用 CultureInfo 和 NumberFormat 解決這個問題的簡單方法?有什麼方法可以覆蓋 CurrencySymbol?

例子:

Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)

這將在設置時出錯,NumberFormat.CurrencySymbol因為NumberFormatis **ReadOnly**

謝謝!

呼叫CloneCultureInfo這將創建一個可變版本,然後設置貨幣符號。

您可以更具體:獲取NumberFormatInfo並且僅複製它。IMO,它稍微優雅一些,除非您需要更改文化中的其他任何內容。

C# 中的範例:

using System;

using System.Globalization;

class Test
{
   static void Main()
   {
       CultureInfo original = CultureInfo.GetCultureInfo(2055);
       NumberFormatInfo mutableNfi = (NumberFormatInfo) original.NumberFormat.Clone();
       mutableNfi.CurrencySymbol = "X";
       Console.WriteLine(50.ToString("C", mutableNfi));
   }
}

引用自:https://stackoverflow.com/questions/951689