Скажем, у меня есть a string
, и это string
значение является суммой денег, локализованной. Локализованным я подразумеваю это, если страна может использовать запятые вместо десятичных точек, например. (Это - всего одно различие в локализации, которое я знаю если.)
Как я могу проанализировать один из них string
s в их decimal
s числовые эквиваленты? Будет decimal.TryParse()
распознать локализованное форматирование? Как я указываю CultureInfo
с TryParse()
?
Вот пример penimal.triparse
с указанным CultureInfo
(шведский в этом случае):
string s = "10,95";
decimal d;
if (decimal.TryParse(s, NumberStyles.Number, CultureInfo.GetCultureInfo("sv-SE"),out d))
{
Console.WriteLine(d);
}
DECIMAL.Triparse поставляется с 2 перегрузками. Один из них принимает информацию о культуре в качестве аргумента (The CulttyInfo IformatProvider):
System.Decimal.TryParse(string s, System.Globalization.NumberStyles style, System.IFormatProvider provider, out decimal result)
Другой берет на гораздо меньше аргументов и использует системы CultureInfo:
System.Decimal.TryParse(string s, out decimal result)
Я не уверен, но я думаю, что вы могли бы установить текущий Системная культура посредством:
Thread.CurrentThread.CurrentCulture = CultureInfo.GetCultureInfo("sv-SE");