How to get specific culture currency pattern

前端 未结 7 2021
一向
一向 2020-12-16 11:35

How do i get the currency pattern for a specific culture?

For Example:

Instead of using:

string.Format(\"{0:c}\", 345.10)

I

7条回答
  •  生来不讨喜
    2020-12-16 11:48

    For Positive and negative number one can use below code snippet for culture

    class Program
    {
        static void Main(string[] args)
        {
            List cultures = new List { "ca-ES", "co-FR", "cs-CZ", "cy-GB", "da-DK", "de-AT", "de-CH", "de-DE", "de-LI", "de-LU", "dsb-DE", "en-US", "en-GB" };
    
            var amount = -16.34M;
    
            foreach (var c in cultures)
            {
                var cultureInfo = CultureInfo.GetCultureInfo(c);
    
                var numberFormat = cultureInfo.NumberFormat;
                String formattedAmount = null;
                if (amount >= Decimal.Zero)
                {
                    String pattern = null;
                    switch (numberFormat.CurrencyPositivePattern)
                    {
                        case 0:
                            pattern = "{0}{1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 1:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "}{0}";
                            break;
                        case 2:
                            pattern = "{0} {1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 3:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "} {0}";
                            break;
                    }
                    formattedAmount = String.Format(cultureInfo, pattern, numberFormat.CurrencySymbol, amount);
    
                }
                else if (amount < Decimal.Zero)
                {
                    String pattern = null;
                    switch (numberFormat.CurrencyNegativePattern)
                    {
                        case 0:
                            pattern = "({0}{1:N" + numberFormat.CurrencyDecimalDigits + "})";
                            break;
                        case 1:
                            pattern = numberFormat.NegativeSign + "{0}{1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 2:
                            pattern = "{0}" + numberFormat.NegativeSign + "{1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 3:
                            pattern = "{0}{1:N" + numberFormat.CurrencyDecimalDigits + "}" + numberFormat.NegativeSign;
                            break;
                        case 4:
                            pattern = "({1:N" + numberFormat.CurrencyDecimalDigits + "}{0})";
                            break;
                        case 5:
                            pattern = numberFormat.NegativeSign + "{1:N" + numberFormat.CurrencyDecimalDigits + "}{0}";
                            break;
                        case 6:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "}" + numberFormat.NegativeSign + "{0}";
                            break;
                        case 7:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "}{0}" + numberFormat.NegativeSign;
                            break;
                        case 8:
                            pattern = numberFormat.NegativeSign + "{1:N" + numberFormat.CurrencyDecimalDigits + "} {0}";
                            break;
                        case 9:
                            pattern = numberFormat.NegativeSign + "{0} {1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 10:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "} {0}" + numberFormat.NegativeSign;
                            break;
                        case 11:
                            pattern = "{0} {1:N" + numberFormat.CurrencyDecimalDigits + "}" + numberFormat.NegativeSign;
                            break;
                        case 12:
                            pattern = "{0}" + " " + numberFormat.NegativeSign + "{1:N" + numberFormat.CurrencyDecimalDigits + "}";
                            break;
                        case 13:
                            pattern = "{1:N" + numberFormat.CurrencyDecimalDigits + "}" + numberFormat.NegativeSign + " " + "{0}";
                            break;
                        case 14:
                            pattern = "({0} {1:N" + numberFormat.CurrencyDecimalDigits + "})";
                            break;
                        case 15:
                            pattern = "({1:N" + numberFormat.CurrencyDecimalDigits + "} {0})";
                            break;
                    }
                    formattedAmount = String.Format(cultureInfo, pattern, numberFormat.CurrencySymbol, amount * -1);
                }
    
                Console.WriteLine(formattedAmount);
            }
    
            Console.ReadKey();
    
        }
    }
    

提交回复
热议问题