Подтвердить что ты не робот

Используйте пользовательский разделитель тысяч в С#

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

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

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

4b9b3361

Ответ 1

Я предлагаю вам найти 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
    }
}

Ответ 2

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

Ответ 3

Там немного более простая версия Jon Skeet one:

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().

Ответ 4

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

num.ToString("### ### ### ### ##0.00")