如何在只读 CultureInfo.NumberFormat 上设置 CurrencySymbol?
Posted
技术标签:
【中文标题】如何在只读 CultureInfo.NumberFormat 上设置 CurrencySymbol?【英文标题】:How to set CurrencySymbol on Readonly CultureInfo.NumberFormat? 【发布时间】:2009-06-04 16:37:34 【问题描述】:我正在尝试使用与默认 .Net 文化 (SFr.) 不同的符号 (CHF) 来格式化货币 (Swiss Frank -- de-CH)。问题是该区域性的 NumberFormat 是 ReadOnly。
有没有使用 CultureInfo 和 NumberFormat 解决此问题的简单方法?有什么方法可以覆盖 CurrencySymbol?
例子:
Dim newCInfo As CultureInfo = CultureInfo.GetCultureInfo(2055)
newCInfo.NumberFormat.CurrencySymbol = "CHF"
MyCurrencyText.Text = x.ToString("c",newCInfo)
这将在设置NumberFormat.CurrencySymbol
时出错,因为NumberFormat
是**ReadOnly**
。
谢谢!
【问题讨论】:
【参考方案1】:在CultureInfo
上调用Clone
,这将创建一个可变版本,然后设置货币符号。
您可以更具体:获取 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));
【讨论】:
漂亮,简单。我可以因为错过这个而踢自己。谢谢!以上是关于如何在只读 CultureInfo.NumberFormat 上设置 CurrencySymbol?的主要内容,如果未能解决你的问题,请参考以下文章