代码之家  ›  专栏  ›  技术社区  ›  citronas

将本地化字符串转换为十进制

  •  1
  • citronas  · 技术社区  · 14 年前

    (将存储到MySql数据库中的10,2十进制的Stringrepresentation)

    因为这个国家的文化ASP.net线程可能会有所不同,因为我的应用程序支持本地化,所以我需要找到一种安全的方法将最可能的用户输入转换为十进制。

    我试过各种各样的十进制。解析但到目前为止一切都失败了。

    解决方案
    我最后的解决方案是混合的。我使用stringreplace来确保我的日期被格式化为用于解析的指定CultureInfo

    5 回复  |  直到 14 年前
        1
  •  2
  •   Lazarus    14 年前

    十进制。解析是一条路要走,但你需要一个特别的超载,包括本地化, Decimal.Parse Method (String, IFormatProvider) .

        2
  •  4
  •   Victor Chelaru    7 年前

    你应该阅读当前的文化信息 比你能做的还要多

    //CultureInfo culture = new CultureInfo("en-US"); 
    
    Convert.ToDecimal(value, System.Globalization.CultureInfo.CurrentCulture)
    
        3
  •  2
  •   Dr Herbie    14 年前

    您有两种选择:

    1. 记录所使用的格式区域性并将其与字符串一起传递,然后将其用于适当的 decimal.Parse(string, IFormatProvider)

    2. 在UI级别(已知区域性的地方)执行解析,并将值作为decimal类型传回。

        4
  •  1
  •   Arseny    14 年前
    Decimal.Parse (String, IFormatProvider) 
    

        5
  •  -2
  •   Zee99    14 年前

    使用不变量区域性转换字符串

    十进制.parse(你的琴弦,系统.全球化.文化信息不变文化);

    如果字符串与系统的cultureinfo不兼容,可能会得到一些奇怪的结果。