如何在只读 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?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 postgresql 中创建只读视图,类似于 oracle?

如何在 C# 中删除包含只读文件的目录?

如何删除只读文件

如何在PostgreSQL中建只读账号

如何在实体框架中创建只读实体?

如何在 gorm postgresql 中定义只读副本