在我的程序要运行的环境中,人们使用“,”和“.”。作为带有“,”和“。”的PC上随机的小数点分隔符分隔符。
你会如何实现这样一个 floatparse(string) 函数?
我试过这个:
try
{
d = float.Parse(s);
}
catch
{
try
{
d = float.Parse(s.Replace(".", ","));
}
catch
{
d = float.Parse(s.Replace(",", "."));
}
}
这是行不通的。当我调试时发现它在第一次想到“。”时解析错误。是千位分隔符(如 100.000.000,0)。
我是 C# 的新手,所以希望没有那么复杂的解决方案:-)
注意:人们会同时使用“.”。和 ',' 在具有不同分隔符设置的 PC 中。
最佳答案
如果你确定没有人使用千位分隔符,你可以先替换:
string s = "1,23"; // or s = "1.23";
s = s.Replace(',', '.');
double d = double.Parse(s, CultureInfo.InvariantCulture);
一般模式是:
- 首先尝试净化和规范化。比如 Replace(otherChar, myChar)。
- 尝试检测一种格式,可能使用 RegEx,并使用有针对性的转换。喜欢数数。和 , 猜测是否使用了千位分隔符。
- 使用 TryParse 按顺序尝试几种格式。 不要为此使用异常(exception)。
关于c# - 将字符串通用解析为 float ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3205522/