Используйте пользовательский разделитель тысяч в C#
Я пытаюсь не использовать', ' char как тысячный разделитель при отображении строки, но вместо этого использовать пробел. Я думаю, мне нужно определить пользовательскую культуру, но я, кажется, не понимаю ее правильно. Любой указатели?
например: дисплей 1000000 как 1 000 000 вместо 1,000,000
(нет, String.Replace()
Это не решение, которое я хотел бы использовать: P)
4 ответов
Я предлагаю вам найти NumberFormatInfo
что наиболее близко соответствует тому, что вы хотите (т. е. это прямо помимо разделителя тысяч), вызовите Clone()
на нем, а затем установите NumberGroupSeparator
собственность. (Если вы собираетесь форматировать номера с помощью валютных форматов, вам нужно изменить CurrencyGroupSeparator
вместо/а.) Используйте это как информацию о формате для ваших звонков в string.Format
etc, и вы должны быть в порядке. Например:
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
}
}
создать свой собственный NumberFormatInfo (производная) с другим тысячным разделителем.
есть немного более простая версия 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 ().