Используйте пользовательский разделитель тысяч в С#
Я пытаюсь не использовать ',' char как разделитель тысяч при отображении строки, но вместо этого использовать пробел. Наверное, мне нужно определить собственную культуру, но, похоже, я не понимаю. Любые указатели?
например: отображение 1000000 как 1 000 000 вместо 1 000 000
(нет, String.Replace()
не является решением, которое я бы хотел использовать: P)
Ответы
Ответ 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")