[英]Changing windows culture programmatically in C#
我想以编程方式更改Windows区域性设置,因为在使用程序时,我需要解析点“”。 作为十进制数字,Windows默认情况下将其设置为“,”。 所以我正在寻找这个。
我已经尝试过通过更改当前应用的区域性来进行尝试,但是当从db解析数据时,它仍然会遇到麻烦,因为它使用Windows配置。
我会强调,做得更好。
这很容易解决,下面是一个简单的示例:
public static decimal GetInvariantDecimal(string internationDecimalString)
{
var looksUnAmerican = Regex.IsMatch(internationDecimalString, @"(\d+,\d{2}\b)|(\d+\.\d+,\d{0,2})|(\d+\.\d{3})");
Console.WriteLine(looksUnAmerican);
return looksUnAmerican ?
Decimal.Parse(internationDecimalString, NumberStyles.Currency, CultureInfo.GetCultureInfo("tr-TR")) :
Decimal.Parse(internationDecimalString, CultureInfo.InvariantCulture);
}
public static void Main()
{
var american = "123.55";
var international = "234,55";
Console.WriteLine(GetInvariantDecimal(american));
Console.WriteLine(GetInvariantDecimal(international));
}
它将为您提供正确环境的标准十进制数,并且每次使用数据库中的字符串时都将使用该十进制数。 (当然,它目前不处理“ 1,234.01”之类的问题...
但是输出:
123.55
234.55
还有一点是,改变用户的机器文化可能会导致各种错误,这些错误会导致谁知道什么……
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.