如何在C#中使用cultureinfo设置百万分隔符(')和千(。)

时间:2017-06-22 15:10:45

标签: c# numbers number-formatting cultureinfo

我尝试使用C#中的cultureinfo将值9.999.999转换为9&999.999,但我无法使其正常工作。

我该怎么做?

2 个答案:

答案 0 :(得分:2)

所以这是一个字符串,你想为第一组提供不同的组分隔符吗?

您可以替换除最后一个点之外的所有点:

string value = "9.999.999";
StringBuilder sb = new StringBuilder(value);
bool skippedLast = false;

for (int i = sb.Length - 1; i >= 0; i--)
{
    if (sb[i] == '.')
    {
        if (!skippedLast)
            skippedLast = true;
        else
            sb[i] = '\'';
    }
}

string desiredOutput = sb.ToString(); // 9'999.999

答案 1 :(得分:1)

由于框架附带的默认IFormatProvider实现缺乏您想要/需要的功能,我建议您自己实现该接口

另外,由于CultureInfo未被密封,您可以扩展类并将您的实现提供给System.Threading.Thread.CurrentThread.CurrentCulture ...该线程上的所有连续格式化调用都将使用您的实现(除非使用特定的调用格式提供者......)