String.Format是否考虑语言环境?

时间:2009-07-30 02:32:59

标签: c# internationalization

String.Format是否有两种工作方式:    如果我们使用内置格式,如C,N,P ....它会考虑区域设置吗?    如果我们使用自定义格式代码,例如#,## 0.000,它不会考虑区域设置吗?

在我的代码中,我使用这样的方法

String.Format(“{0:#。## 0,000}”,value);

因为我的国家/地区使用逗号作为小数点分隔符

但结果仍然是:1,234.500,好像它将点视为小数点分隔符。

请帮忙!

3 个答案:

答案 0 :(得分:18)

您想使用CultureInfo

value.ToString("N", new CultureInfo("vn-VN"));

使用String.Format

String.Format(new CultureInfo("vi-VN"), "N", value);

由于你在河内(来自个人资料),我使用的是越南代码,vn-VN

答案 1 :(得分:3)

这很有效。

IFormatProvider iFormatProvider = new System.Globalization.CultureInfo("es-ES");

string s = value.ToString("#,##0.000", iFormatProvider);

string s2 = string.Format(iFormatProvider, "{0:#,##0.000}", val)

请注意,,.使用的是“标准”en-US样式,但.ToString()string.Format()使用格式提供程序是正确的。< / p>

答案 2 :(得分:0)

您应确保您的线程使用正确的区域性:

        Thread.CurrentThread.CurrentCulture = CultureInfo.CurrentCulture
        Thread.CurrentThread.CurrentUICulture = CultureInfo.CurrentCulture
        FrameworkElement.LanguageProperty.OverrideMetadata(GetType(FrameworkElement), New FrameworkPropertyMetadata(XmlLanguage.GetLanguage(CultureInfo.CurrentCulture.IetfLanguageTag)))