Используйте пользовательский разделитель тысяч в C # - PullRequest
33 голосов
/ 15 апреля 2009

Я пытаюсь не использовать символ ',' в качестве разделителя тысяч при отображении строки, а вместо этого использовать пробел. Я думаю, что мне нужно определить собственную культуру, но я не понимаю, как это правильно. Есть указатели?

Например: отображать 1000000 как 1 000 000 вместо 1 000 000

(нет, String.Replace() - это не то решение, которое я хотел бы использовать: P)

Ответы [ 4 ]

67 голосов
/ 15 апреля 2009

Я предлагаю вам найти NumberFormatInfo, который наиболее точно соответствует тому, что вы хотите (т. Е. Прямо напротив разделителя тысяч), вызвать Clone() и затем установить NumberGroupSeparator свойство. (Если вы собираетесь отформатировать номера с использованием форматов валюты, вам нужно вместо этого изменить также CurrencyGroupSeparator.) Используйте это в качестве информации о формате для ваших вызовов на string.Format и т. Д. все должно быть в порядке. Например:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = (NumberFormatInfo)
            CultureInfo.InvariantCulture.NumberFormat.Clone();
        nfi.NumberGroupSeparator = " ";

        Console.WriteLine(12345.ToString("n", nfi)); // 12 345.00
    }
}
8 голосов
/ 15 апреля 2009

Создайте свой собственный NumberFormatInfo (производный) с другим разделителем тысяч.

5 голосов
/ 24 января 2014

Есть несколько более простая версия Джона Скита:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        NumberFormatInfo nfi = new NumberFormatInfo {NumberGroupSeparator = " ", NumberDecimalDigits = 0};

        Console.WriteLine(12345678.ToString("n", nfi)); // 12 345 678
    }
}

И инициализацию 'nfi' можно пропустить и поместить непосредственно в качестве параметра в метод ToString ().

2 голосов
/ 15 апреля 2009

Самый простой способ ...

num.ToString("### ### ### ### ##0.00")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...