C# 尝试将字符串中的负货币金额解析为十进制
我试图将以下字符串“-5017.85”移动到十进制变量中 我试过了C# 尝试将字符串中的负货币金额解析为十进制,c#,.net,C#,.net,我试图将以下字符串“-5017.85”移动到十进制变量中 我试过了 var sAmount = float.Parse(line[1]); sAmount = decimal.Parse(line[1]); sAmount = double.Parse(line[1]); sAmount = decimal.Parse(line[1], NumberStyles.Currency); sAmount = decimal.Parse(line[1], NumberStyles.AllowLeadi
var sAmount = float.Parse(line[1]);
sAmount = decimal.Parse(line[1]);
sAmount = double.Parse(line[1]);
sAmount = decimal.Parse(line[1], NumberStyles.Currency);
sAmount = decimal.Parse(line[1], NumberStyles.AllowLeadingSign);
但都不管用。我得到一个system.formatexception
我错过了什么
编辑:我当然已经调试过了,值实际上是:“\”-5017.85\”
,我假设\
是转义字符,但当我从“监视”窗口中的变量中删除它们时,解析工作正常。删除“转义字符”“-5017.85”
编辑2:这很有效,给了我正确的答案,但我一点也不喜欢
line[1].Remove(line[1].Length-1,1).Remove(0,1)
有什么更好的方法吗?这里显然有些不对劲,我怀疑
行[1]
不是你想象的那样。您确定行[1]==“-5017.85”
为真
另一种可能的情况是,您具有不同的区域性设置,该设置阻止将-
解析为可选符号字符或将
解析为小数点分隔符,但这是不太可能的情况
如果您确定行[1]==“-5017.85”
是真的
,请尝试一下好吗
var sAmount = Decimal.Parse(
line[1],
System.Globalization.CultureInfo.InvariantCulture
);
然后回来报到
当然,我已经调试过了,实际值是:“\”-5017.85\”
那么,在这种情况下,我只需要使用空字符串替换\“
字符,如中所示:
var sAmount = Decimal.Parse(line[1].Replace("\"", ""));
这里显然有点不对劲,我怀疑
行[1]
不是你想象的那样。你确定行[1]==“-5017.85”
是真的吗
另一种可能的情况是,您具有不同的区域性设置,该设置阻止将-
解析为可选符号字符或将
解析为小数点分隔符,但这是不太可能的情况
如果您确定行[1]==“-5017.85”
是真的
,请尝试一下好吗
var sAmount = Decimal.Parse(
line[1],
System.Globalization.CultureInfo.InvariantCulture
);
然后回来报到
当然,我已经调试过了,实际值是:“\”-5017.85\”
那么,在这种情况下,我只需要使用空字符串替换\“
字符,如中所示:
var sAmount = Decimal.Parse(line[1].Replace("\"", ""));
尝试double.Parse(第[1]行).Trim()代码>;这里似乎有非数字的空格字符。尝试double.Parse(第[1]行).Trim()代码>;这里似乎有非数字的空白字符。因此,您的字符串似乎包含不必要的“字符”。您可以使用以下方法将其删除:
因此,您的字符串似乎包含一个不必要的“字符”。您可以使用以下方法将其删除:
什么是行
?如果是字符串,则表示您正在尝试解析单个字符。抱歉。行是字符串数组是否确定索引1处的字符串包含“-5017.85”?它是否可以改为位于索引0处?尝试插入断点,调试并查看真正包含的行。什么是line
?如果是字符串,则表示您正在尝试解析单个字符。抱歉。行是字符串数组是否确定索引1处的字符串包含“-5017.85”?它是否可以改为位于索引0处?试着插入一个断点,调试一下,看看这行到底包含了什么。谢谢。有关值,请参见我的编辑。里面有逃逸的角色value@kurasa:只需使用字符串。替换;请看我编辑的答案。谢谢。有关值,请参见我的编辑。里面有逃逸的角色value@kurasa:只需使用字符串。替换;请看我编辑过的答案。我自己刚找到这个,正要发布第[1]行。替换(“\”,string.Empty),但你抢先了我一步……呵呵……我会把你的答案标记为“”,你说string.Empty.Tomato,Tomato.:)我刚找到这个,正要发布第[1]行。替换(“\”,string.Empty)但是你赢了我…呵呵..我会把你的回答记下来我说“”,你说string.Empty。西红柿,西红柿