私のプロジェクトには、組み込みの{0:C}
通貨形式で通貨を表示しようとする場所がたくさんあります。数値が負の場合は、値を括弧で囲みます。代わりにマイナス記号を使用したい。
私の web.config では、カルチャが に設定されてauto
おり、それは に解決されen-US
ます。
理想的な解決策は、グローバルな web.config または文化{0:C}
の否定的な兆候を表示するその他の設定ですen-US
が、私は他のそれほど素晴らしい解決策も受け入れています。
NumberFormatInfo.CurrencyNegativePattern
おそらく1である正しいものを指定する必要があります。
Decimal dec = new Decimal(-1234.4321);
CultureInfo culture = CultureInfo.CreateSpecificCulture("en-US");
culture.NumberFormat.CurrencyNegativePattern = 1;
String str = String.Format(culture, "{0:C}", dec);
Console.Write(str);
出力:
-$1,234.43
ここでの答えを組み合わせることで、あなたが望むものに近づくことができると思います。
protected void Application_BeginRequest()
{
var ci = CultureInfo.GetCultureInfo("en-US");
if (Thread.CurrentThread.CurrentCulture.DisplayName == ci.DisplayName)
{
ci = CultureInfo.CreateSpecificCulture("en-US");
ci.NumberFormat.CurrencyNegativePattern = 1;
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}
}
このような単一の文化を扱うコードを持ちたくない場合...独自の文化を構築する必要があると思います...この質問を確認してください
私があなたの質問を理解する限り。
カルチャに応じて通貨形式を表示したい。
カルチャ固有のことを行うたびに、.NET はThread.CurrentThread.CurrentCulture
と を調べますThread.CurrentThread.CurrentUICulture
。
global.asaxBeginRequest
メソッドで ASP.NET に必要なカルチャを設定できます。
protected void Application_BeginRequest()
{
var ci = CultureInfo.GetCultureInfo("en-US"); // put the culture you want in here
Thread.CurrentThread.CurrentCulture = ci;
Thread.CurrentThread.CurrentUICulture = ci;
}