56

有没有办法从应用程序文化设置中动态获取当前信息?基本上,如果用户将文化设置为美国,我想知道货币是美元,或者如果他们将其设置为英国,我想英镑等......等等。

这样我就可以在付款时将此信息发送到 PayPal

4

8 回答 8

91

使用 RegionInfo.ISOCurrencySymbol 属性。例如:

  var ri = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
  Console.WriteLine(ri.ISOCurrencySymbol);

输出:“美元”

于 2010-05-04T07:22:16.130 回答
43

您可以从中获取符号CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol但我怀疑这是否足够;您可能需要为每种文化维护一个单独的列表。或者只是让用户告诉您他们想要支付的费用(例如,他们可能不在家等,因此某些酒店休息室的 PC 文化与他们信用卡上的不同)

于 2010-05-04T06:15:24.063 回答
27

一旦你有了 CultureInfo ci 对象,你可以这样问

ci.NumberFormat.CurrencySymbol

对于当前的文化,您只需这样做

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol
于 2010-05-04T06:07:15.980 回答
4
string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;
于 2011-10-27T10:08:48.953 回答
2

你基本上可以使用 CultureInfo 类

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;
于 2010-05-04T06:07:56.137 回答
1
    public static string GetCurrencySymbol(string currency)
    {
        if (currency == null) return "";
        if (currency == "") return "";
        int i = 0;
        var regionInfo = new RegionInfo(System.Threading.Thread.CurrentThread.CurrentUICulture.LCID);
        foreach (var cultureInfo in CultureInfo.GetCultures(CultureTypes.AllCultures & ~CultureTypes.NeutralCultures))
        {
            if (!cultureInfo.Equals(CultureInfo.InvariantCulture))
            {
                var regionCulture = new RegionInfo(cultureInfo.LCID);

                    if(regionCulture.ISOCurrencySymbol == currency)
                    {
                        //list.Add(regionCulture);
                        regionInfo = regionCulture;
                    }
                }
        }
于 2010-12-13T07:55:12.533 回答
1

这对我有用。

var c = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
      .Select(t=> new RegionInfo(t.LCID))
      .Where(t=>t.ThreeLetterISORegionName  == "USA")
      .FirstOrDefault();
于 2020-05-11T11:20:15.763 回答
0

http://help.outlook.com/en-us/140/system.globalization.regioninfo.currencynativename(VS.85).aspx

您需要 RegionInfo.CurrencyNativeName、RegionInfo.CurrencyEnglishName 或 RegionInfo.ISOCurrencySymbol

于 2010-06-02T13:57:42.213 回答