避免ToString中的当前文化(..)

时间:2011-07-04 09:48:48

标签: .net localization tostring

我需要按照指定的显示格式格式化十进制值。下面的代码中的"decimalValue.ToString("##,##,##,##,##,##,###")"正在内部考虑当前的应用程序文化并相应地格式化值。

我尝试过CulutreInfo.InvariantCulture - 没有帮助因为 InvariantCulture的“NumberFormat.CurrencyGroupSizes”设置为3,并考虑格式化值。

我需要避免它,我应该能够告诉应用程序ingore文化,并按照指定的displayformat格式化值。

任何解决方案?请帮忙。

e.g。

 decimal? de = 1234567890;
 string displayFormat = "##,##,##,##,##,##,###";
 string result = de.Value.ToString(displayFormat);
 System.Console.WriteLine(result); 

o / p - 1,234,567,890 (应用文化是en-US)。

3 个答案:

答案 0 :(得分:1)

试试这个:

decimal? de = 1234567890;
string displayFormat = "##/##/##/##/##/##/###";
string result = de.Value.ToString(displayFormat).Replace("/", ",").TrimStart(new char[] { ',' } );
System.Console.WriteLine(result); 

答案 1 :(得分:0)

using System.Globalization;

void Main()
{
    CultureInfo myCIintl = new CultureInfo( "hi-IN", false );
    Thread.CurrentThread.CurrentCulture = myCIintl;
    double de = 1234567890;
    Console.WriteLine(de.ToString("c"));
}

答案 2 :(得分:0)

如果你想要印度数字/日期格式化,那么shahkalpesh共享的代码是有效的(但是你不需要改变线程的文化,你可以直接在String.Format(IFormatProvider, String, Object[])方法中设置它)

如果您想创建自己的自定义文化,请考虑使用CultureAndRegionInfoBuilder来定义它。