C# 尝试将字符串中的负货币金额解析为十进制

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

我试图将以下字符串“-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.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。西红柿,西红柿