2016-10-04 18 views
2

関連付けられた通貨で数値をロケール固有の文字列に書式化したいとします。標準.ToString("C", CultureInfo.CreateSpecificCulture("xxx"))は、値が実際に表す通貨ではなくロケールの通貨を使用するため、間違った出力を生成します。お金を文字列として書式設定する際の通貨を指定します。

私はjQueryのグローバル化が何を行うための方法を探していますが、C#で(here、以下のrelaventの表を参照してください)

 
              Locale 
         ----------------------------------------- 
3-letter currency code | en (English) | de (German) | zh (Chinese) 
---------------------- | ------------ | ----------- | ------------ 
USD     | $1.00  | 1,00 $  | US$ 1.00 
EUR     | €1.00  | 1,00 €  | € 1.00 
CNY     | CN¥1.00  | 1,00 CN¥ | ¥ 1.00 
JPY     | ¥1   | 1 ¥   | JP¥ 1 
GBP     | £1.00  | 1,00 £  | £ 1.00 
BRL     | R$1.00  | 1,00 R$  | R$ 1.00 
+0

コードなど'1.ToString( "C"、System.Globalization.CultureInfo.CreateSpecificCulture( "fr-FR")) 'は出力を1,00€として、" en-US "は結果を$ 1.00 まさにあなたが試みていること? – GauravKP

+0

私は1米ドル持っています。私はロケールfr-FRのためにそれをフォーマットしたいと思います。 '' ToString( "C"、CultureInfo.CreateSpecificCulture( "fr -F R")) 'は、不適切な通貨である" 1,00€ "を返します。私は "1,00 $"を取得したい – flipchart

+0

、これはhttps://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.numberdecimalseparator(v=vs.110).aspx – GauravKP

答えて

4
string FormatCurrency(decimal value, string currencyCode, string locale) 
{ 
    var culture = CultureInfo.CreateSpecificCulture(locale); 
    var numberFormat = (NumberFormatInfo) culture.NumberFormat.Clone(); 
    var currencySymbol = CultureInfo.GetCultures(CultureTypes.AllCultures) 
            .Where(ci => ci!=CultureInfo.InvariantCulture) 
            .Select(c =>{try{return new RegionInfo(c.LCID);} 
                catch{return null;}}) 
            .Where(ri=>ri!=null && 
               ri.ISOCurrencySymbol==currencyCode) 
            .Select(ri => ri.CurrencySymbol) 
            .First(); 
    numberFormat.CurrencySymbol = currencySymbol; 
    return value.ToString("C",numberFormat); 
} 

FormatCurrency(1m,"USD","de")ように戻っ"1,00 $"とは、それはありませんよ任意のロケールでCN¥JP¥のようなものを区別できます。通貨記号は、依然として固有のロケールで使用されています。余分な通貨情報はUnicode Common Locale Data Repository (CLDR)から得ることができます。

関連する問題