通常当我需要将货币字符串(如1200,55zł或$1,249)转换为十进制值时,我会这样做:
if (currencyString.Contains("zł)) { decimal value = Decimal.Parse(datatocheck.Trim(),NumberStyles.Number | NumberStyles.AllowCurrencySymbol); }
有没有办法检查字符串是否是货币而不检查特定货币?
解决方法
如果你只是进行转换(你应该添加| NumberStyles.AllowThousands
| NumberStyles.AllowDecimalPoint也是如此)如果字符串包含当前UI的错误货币符号,则解析将失败 – 在这种情况下通过引发异常.它包含没有货币符号,解析仍然可以工作.
| NumberStyles.AllowDecimalPoint也是如此)如果字符串包含当前UI的错误货币符号,则解析将失败 – 在这种情况下通过引发异常.它包含没有货币符号,解析仍然可以工作.
因此,您可以使用TryParse来实现此目的并测试失败.
如果您的输入可以是任何货币,则可以使用this version of TryParse
将IFormatProvider作为参数,您可以使用该参数指定有关字符串的特定于区域性的解析信息.因此,如果解析失败了默认的UI文化,您可以循环再次尝试支持的每种文化.当你发现有效的那个时,你就得到了它的数量和货币类型(兹罗提,美元,欧元,卢布等)
原文地址:https://www.jb51.cc/csharp/91822.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。