【发布时间】:2011-07-26 06:50:20
【问题描述】:
我有-$2.00 作为字符串。我试图通过使用子字符串删除- 和$ 将其更改为十进制,但我做错了。有人可以帮我吗?
谢谢。
【问题讨论】:
-
您使用的 .Net 框架版本是什么?
我有-$2.00 作为字符串。我试图通过使用子字符串删除- 和$ 将其更改为十进制,但我做错了。有人可以帮我吗?
谢谢。
【问题讨论】:
string m = "-$2.00";
decimal d = Math.Abs(Decimal.Parse(m, NumberStyles.Currency));
【讨论】:
Math.Abs()就不会是负数了
Substring 将返回一个新字符串。我怀疑您的问题可能是由于尝试在适当的位置改变字符串,这不起作用。
你可以这样做:
string result = original.Substring(2);
decimal value = decimal.Parse(result);
根据输入字符串的生成方式,您可能希望改用decimal.TryParse,或其他具有更好错误处理能力的例程。
【讨论】:
不要。
相反,您应该让 .Net 为您完成繁琐的工作:
Decimal value = Decimal.Parse("-$2.00", NumberStyles.Currency);
如果由于某种原因您不想要负数,请致电Math.Abs。
【讨论】:
所有字符串操作都返回一个新字符串,因为字符串是不可变的
【讨论】:
如果可以避免的话,我不会使用子字符串。这样做会更简单:
string result = original.Replace("$", "").Replace("-", "");
【讨论】:
Substring 以更易读的方式执行此操作,同时不创建额外的对象?