Как преобразовать целое число в строку, используя текущую культуру в .NET? - PullRequest
6 голосов
/ 01 декабря 2011

Как преобразовать целое число в локализованную строку в .NET?

Пример использования:

Int64 value = 12345678901;

value.ToString();  
   // returns "12345678901", should be "123,4567,8901"

value.ToString(CultureInfo.CurrentCulture);  
   // returns "12345678901", should be "123,4567,8901"

value.ToString(CultureInfo.CreateSpecificCulture("en-US")) 
   // returns "12345678901", should be "12,345,678,901"

value.ToString(CultureInfo.CreateSpecificCulture("fr-CH"))
   // returns "12345678901", should be "12'345'678'901"

value.ToString(CultureInfo.CreateSpecificCulture("te-IN"))
   // returns "12345678901", should be "12,34,56,78,901"

Как преобразовать целое число (или число с плавающей запятой) в локализованную строку в .NET?

Бонусная болтовня

Уникальный список форматов чисел в мире:

  • 12,34,56,78,901
  • 12345678901
  • 12.345.678.901
  • 12? 345? 678? 901
  • 123,4567,8901
  • 12'345'678'901

Дополнительная информация о бонусах, где эти настройки культуры можно найти в .NET:

CultureInfo.CreateSpecificCulture("en-US").NumberFormat.NumberGroupSizes = { 3 }
CultureInfo.CreateSpecificCulture("en-US").NumberFormat.NumberGroupSeparator = ","

CultureInfo.CreateSpecificCulture("te-IN").NumberFormat.NumberGroupSizes = { 3, 2 }
CultureInfo.CreateSpecificCulture("te-IN").NumberFormat.NumberGroupSeparator = ","

CultureInfo.CreateSpecificCulture("te-IN").NumberFormat.NumberGroupSizes = { 3 }
CultureInfo.CreateSpecificCulture("te-IN").NumberFormat.NumberGroupSeparator = "'"

1 Ответ

9 голосов
/ 01 декабря 2011

Используйте спецификатор формата "N" с точностью до 0.

using System;

class Test
{
    static void Main() 
    {
        long value = 12345678901;
        string text = value.ToString("N0");
        Console.WriteLine(text);
    }
}

Результат (на моей британской машине):

12,345,678,901

Это будет учитывать текущую культуру для различных аспектов. Конечно, вы можете указать культуру отдельно.

Редактировать : Обобщенная форма для определенных культур:

value.ToString("N0", CultureInfo.CreateSpecificCulture("fr-CH"));
...