c#中不同时区数字格式转换(主要是小数点的区别)

在使用C#开发软件并需要应用到国外市场的时候,对于欧洲国家的用户来说可能会碰到小数点(,)识别不了的问题,那么接下来就介绍一种方法来让软件自动识别用户输入的数字格式。

整体思想就是:当用户在TextBox中输入的字符串参与计算之后,软件底层会先进行一次double.TryParse的转换,如果转换不成功的话,那么只有两种可能:1.输入的不是数字,例如:“”;2.输入的是识别不了的时区格式,例如,当前的CultureInfo.CurrentCulture为{zh-CN},但是你输入的是"123,4",那么软件就不会识别出来你输入的小数;

解决办法是:
1.以{zh-CN}为基准,当double.TryParse的结果为false时,先判断当前的时区格式是不是{zh-CN}如果是的话,那么就再转一下{de-DE}格式,如果还是false,那么就是你输入的数字格式有问题,有可能是个“”;

2.当判断不是{zh-CN}时,就再判断是否是{de-DE}格式的,如果是的话,就按照{zh-CN}的格式进行转换一下,此时如果返回值为false,则说明你输入的数字格式有问题,可能是个“”。

具体实现代码如下:

private double Str2Double(string strText)
{
    bool bRet=true;
    double dValue=0;
    //第一次检测
    bRet=double.TryParse(strText,System.Globalization.NumberStyles.Float,CultureInfo.CurrentCulture,out dValue);
    if(bRet)//说明转换成功,当前输入的数据符合当前的时区格式
    {
        return dValue;
    }
    else//没有转成功,可能为“”,也可能是时区格式不对
    {
        string[] ClutureSources={"en-us","zh-cn","ar-iq","de-de"};
        CultureInfo culture=CultureInfo.GetCultureInfo(CultureSources[1]);
        if(CultureInfo.CurrentCulture.Name==cluture.ToString())//当前为中国时区,且转换成中国时区失败,尝试转换成欧洲时区;
        {
            culture=CultureInfo.GetCulture(CultureSources[3]);
            bRet=double.TryParse(strText,System.Globalization.NumberStyles.Float,culture,out dValue);
        }
        else//当前为其他时区,且转换成其他时区失败,尝试转换成中国时区;
        {
            culture=CultureInfo.GetCulture(CultureSources[1]);
            bRet=double.TryParse(strText,System.Globalization.NumberStyles.Float,culture,out dValue);
        }
        return dValue;
    }
}

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值