Культура проблема чтения отформатированных десятичных значений - PullRequest
2 голосов
/ 17 ноября 2009

У меня есть консольное приложение (которое также запускается как служба при развертывании). Я читаю значения, которые происходят из текстового файла. Проблема в том, что я не могу заставить десятичные значения работать правильно.

Они отформатированы «по-шведски», как это 3,4, что в «английском» формате 3.4.

Когда я использую:

Decimal.TryParse(value, NumberStyles.Number, new CultureInfo("sv"), out result);

Я получаю

Культура 'sv' - нейтральная культура. Это не может быть использован в форматировании и разбор и, следовательно, не может быть установлен как текущая культура потока.

исключение.

Если я попытаюсь:

Decimal.TryParse(value, out result);

Значение перевоплощается (3,4 становится 3).

Есть ли способ прочитать эти отформатированные значения (которые также могут быть целыми числами) надежным и безопасным способом, независимо от настроек в операционной системе.

1 Ответ

4 голосов
/ 17 ноября 2009

Вам необходимо использовать «sv-SE»

"sv" по умолчанию - "sv-EN", вам нужно указать страну, а затем язык в этом случае.

static void Main(string[] args)
{
  decimal result;
  Decimal.TryParse("2,3", NumberStyles.Number, new CultureInfo("sv-SE"), 
                   out result); 
  Console.WriteLine(result);
  Console.ReadLine();
}

Результат 2,3

...