将字符串解析为十进制,逗号和句点

如何将字符串解析为十进制,以便它适用于两种格式 – w /逗号和句点?

[Fact] public void foo(){ var a="1,1"; var b="1.1"; Assert.Equal(Parse(a),Parse(b)); } private decimal Parse(string s){ return decimal.Parse(s,NumberStyles.Any, CultureInfo.InvariantCulture); } 

输出:

 Test 'Unit.Sandbox.foo' failed: Assert.Equal() Failure Expected: 11 Actual: 1,1 

你可以尝试:

 private decimal Parse(string s){ s = s.Replace(",", CultureInfo.InvariantCulture.NumberFormat.NumberDecimalSeparator); return decimal.Parse(s,NumberStyles.Any, CultureInfo.InvariantCulture); } 

这个怎么样?

 private static decimal Parse(string s) { s = s.Replace(",", "."); return decimal.Parse(s); } 

您应该通过在解析逗号十进制字符串之前将货币小数点分隔符修改为逗号来获得所需的结果。 这里有一些食物资源:

http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.currencydecimalseparator.aspx#Y888

您也可以实现自己的Iformatprovider,如下所述:

http://msdn.microsoft.com/en-us/library/t7xswkc6.aspx http://msdn.microsoft.com/en-us/library/system.globalization.numberformatinfo.aspx

哦,或者你可以做一个肮脏的黑客,只需在“,”上用“。”运行字符串替换。 ;)