我有一个字符串,可能看起来像“123,34”,“123123,09”,“1234”,“123.34”,“123123.09”
(将存储到MySql DB中的10,2十进制的字符串表示)
由于ASP.net线程的文化可能不同,因为我的应用程序支持本地化,我需要找到一种安全的方法将最可能的用户输入转换为小数。
这怎么可能?
我尝试了各种Decimal.Parse尝试,到目前为止都失败了。
解决方案:
我的最终解决方案是混合的。我使用字符串替换来确保我的日期格式化为我用于解析的指定CultureInfo
答案 0 :(得分:2)
您应该阅读当前的文化信息 而且你可以
//CultureInfo culture = new CultureInfo("en-US");
Convert.ToDecimal(value, System.Globalization.CultureInfo.CurrentCulture)
答案 1 :(得分:2)
一旦将小数转换为字符串,实际上没有简单的方法来告诉使用哪种文化格式来格式化它。 您有两种选择:
记录所使用的格式化文化并将其与字符串一起传回,然后将其用于相应的decimal.Parse(string, IFormatProvider)
在UI级别(文化已知的位置)执行解析,并将值作为十进制类型传回。
答案 2 :(得分:1)
Decimal.Parse是要走的路,但你需要包含本地化的特定重载Decimal.Parse Method (String, IFormatProvider)。
答案 3 :(得分:1)
Decimal.Parse (String, IFormatProvider)
其中IFormatProvider是字符串的特定于文化的格式
答案 4 :(得分:-2)
使用InvariantCulture转换字符串
Decimal.parse(yourstring,System.Globalization.CultureInfo.InvariantCulture);
如果您的字符串与系统的cultureinfo不兼容,您可能会得到一些奇怪的结果。