我已经尝试解决这个问题好几个小时了,但绝对不明白编译器在这里做了什么。我有基本上看起来像这样的字符串:
"KL10124 Traitor #2 - +XX-+0.25 - More Stuff"
并且需要以编程方式读取双“0.25”。调用s上面的字符串,下面两行不起作用:
string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
double d = Convert.ToDouble(h2);
如果我显示 d,则输出为“25”。我认为这可能取决于'。resp ',' 文化依赖,但如果我插入
double d = Convert.ToDouble(h2.Replace('.',','));
它没有改变任何东西,输出仍然是“25”。
但最后,如果我执行下面的蛮力方法,我会在屏幕上得到逐字输出“0,25”
double d;
string[] h = s.Split('-');
string h2 = h[2].Substring(1,h[2].Length - 2);
if (h2.Contains("."))
{
string[] h3 = h2.Split('.');
d = Convert.ToDouble(h3[0]) + Convert.ToDouble(h3[1])/100;
}
else
{
d = Convert.ToDouble(h2);
}
return d;
为什么前两个版本不起作用?最后一点代码不可能是正确的方法。