String.Format считают локалью или нет? - PullRequest
7 голосов
/ 30 июля 2009

Правда ли, что String.Format работает 2 способами: если мы используем встроенный формат, такой как C, N, P .... это будет учитывать настройки локали? если мы используем код нестандартного формата, такой как #, ## 0.000, он НЕ учитывает настройки локали?

В моем коде я использую такой метод

String.Format ("{0: #. ## 0,000}", значение);

потому что моя страна использует запятую в качестве десятичного разделителя

но результат по-прежнему: 1 234 500, как если бы он рассматривал точку как десятичный разделитель.

Пожалуйста, помогите!

Ответы [ 2 ]

18 голосов
/ 30 июля 2009

Вы хотите использовать CultureInfo :

value.ToString("N", new CultureInfo("vn-VN"));

Использование String.Format:

String.Format(new CultureInfo("vi-VN"), "N", value);

Поскольку вы находитесь в Ханое (из профиля), я использовал код Вьетнама, который является vn-VN.

3 голосов
/ 30 июля 2009

Это работает.

IFormatProvider iFormatProvider = new System.Globalization.CultureInfo("es-ES");

string s = value.ToString("#,##0.000", iFormatProvider);

string s2 = string.Format(iFormatProvider, "{0:#,##0.000}", val)

Обратите внимание, что , и . используют «стандартный» стиль en-US, но .ToString() и string.Format() с поставщиком форматов делают правильную вещь.

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