繁体   English   中英

在C#中以编程方式更改Windows文化

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM