[英]How can I parse only the float number from the string?
foreach (object item in listBox1.SelectedItems)
{
string curItem = item.ToString();
var parts = curItem.Split("{}XY=, ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var xCoord = float.Parse(parts[0]);
var yCoord = float.Parse(parts[1]);
var point = new PointF(xCoord, yCoord);
CloudEnteringAlert.pointtocolor.Add(point);
pictureBox1.Invalidate();
}
curItem变量包含如下值: Cloud detected at: 0.9174312 Kilometers from the coast.
我只想从值中获取0.9174312并将其设置为变量xCoord。 问题是它现在执行解析的方式出现错误:
Input string was not in a correct format
我猜索引应该不为零。 如何仅从字符串中获取浮点数?
现在,此字符串格式每次都相同:
第一部分: Cloud detected at: Second part: 0.9174312 and Last part: Kilometers from the coast.
但是也许将来我会更改字符串格式,所以我需要在任何地方浮点数都将在字符串的最后或中间以仅获取浮点数。
考虑使用正则表达式。
var match = Regex.Match(val, @"([-+]?[0-9]*\.?[0-9]+)");
if (match.Success)
xCoord = Convert.ToSingle(match.Groups[1].Value);
尝试这个
foreach (object item in listBox1.SelectedItems)
{
string curItem = item.ToString();
var parts = curItem.Split("{}XY=, ".ToCharArray(), StringSplitOptions.RemoveEmptyEntries);
var xCoord = CultureCheck(parts[0]);
var yCoord = CultureCheck(parts[1]);
var point = new PointF(xCoord, yCoord);
CloudEnteringAlert.pointtocolor.Add(point);
pictureBox1.Invalidate();
}
private double CultureCheck(string input)
{
CultureInfo ci = (CultureInfo)CultureInfo.CurrentCulture.Clone();
ci.NumberFormat.CurrencyDecimalSeparator = ".";
return double.Parse(input, NumberStyles.Any, ci);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.