从当前文化中获取货币?

时间:2010-05-04 06:01:51

标签: c# currency cultureinfo

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

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

8 个答案:

答案 0 :(得分:78)

使用RegionInfo.ISOCurrencySymbol属性。例如:

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

输出:“USD”

答案 1 :(得分:40)

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

答案 2 :(得分:26)

拥有CultureInfo ci对象后,您可以询问

ci.NumberFormat.CurrencySymbol

对于当前的文化,你只需要

CultureInfo.CurrentCulture.NumberFormat.CurrencySymbol

答案 3 :(得分:4)

string isoCurrencySymbol = RegionInfo.CurrentRegion.ISOCurrencySymbol;

答案 4 :(得分:2)

你基本上可以使用CultureInfo类

CultureInfo ci = new CultureInfo(UICulture);
var symbol = ci.NumberFormat.CurrencySymbol;

答案 5 :(得分: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;
                    }
                }
        }

答案 6 :(得分:0)

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

你需要RegionInfo.CurrencyNativeName,RegionInfo.CurrencyEnglishName或RegionInfo.ISOCurrencySymbol

答案 7 :(得分:0)

这对我有用。

var c = CultureInfo.GetCultures(CultureTypes.SpecificCultures)
      .Select(t=> new RegionInfo(t.LCID))
      .Where(t=>t.ThreeLetterISORegionName  == "USA")
      .FirstOrDefault();