c# - 如何只解析字符串中的 float ?

标签 c# .net winforms

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 变量包含如下值:检测到的云:距海岸 0.9174312 公里。

我只想从值中获取 0.9174312 并将其设置在变量 xCoord 中。 问题是它现在进行解析的方式出现错误:

输入的字符串格式不正确

我猜索引不应该为零。如何只从字符串中获取 float ?

现在这个字符串格式每次都是一样的:

第一部分: 检测到的云:第二部分:0.9174312 和最后一部分:距海岸公里数。

但也许将来我会更改字符串格式,因此我需要在任何地方将 float 放在字符串的中间或开头以仅获取 float 。

最佳答案

考虑使用正则表达式。

var match = Regex.Match(val, @"([-+]?[0-9]*\.?[0-9]+)");
if (match.Success)
  xCoord = Convert.ToSingle(match.Groups[1].Value);

关于c# - 如何只解析字符串中的 float ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25841586/

相关文章:

c# - 任意数量对象的笛卡尔积

c# - 使用 Rhino Mocks 创建内存数据库以供开发代码和用户界面时使用

c# - SQL 数据库中的 BLOB 文件作为 block

c# - MVC 中的硬编码 Controller 、 View 和操作名称是好的做法吗?

c# - 什么是最快的 WinForms 控件套件(商业)

c# - 无法捕获 Winforms 中未处理的异常

c# - 如何在表单加载时删除所有 DataGridView 行?

C# 隐式更新传递给没有返回类型且没有 out 或 ref 用法的方法的参数

c# - 使用 Imagemagick.NET 去除透明度

.net - 翻转数字符号的函数