如何将字符串转换为点?

4
我有一个格式为"x,y"的字符串列表,我想把它们全部转换成点(Point)。我能找到的最好的Point构造函数需要两个整数(ints)。在C#中,将"14,42"转换为new Point(14,42)的最佳方法是什么?
我知道可以使用正则表达式"/(\d+),(\d+)/"来实现,但我在将这两个匹配组转换为整数时遇到了困难。
4个回答

13

嗯,现在,这就太简单了!:) - NateD
我在引用中添加了System.Windows,但出现了错误(无法解析point)。我在哪里可以找到WindowsBase.dll?我正在使用VB中的vs2017和Windows表单。 - Tony Springs
请注意,这篇文章已经有10年的历史了!我建议您首先查看您正在使用的版本和堆栈的文档。 - Paul Kohler

12

就像这样:

string[] coords = str.Split(',');

Point point = new Point(int.Parse(coords[0]), int.Parse(coords[1]));

3
在第一个Parse之后缺少一个括号,这就是在没有在VS中检查的情况下输入时会出现的问题。 - Yuriy Faktorovich

2
您可以使用逗号作为分隔符进行简单的字符串拆分,然后只需使用 int.parse(string) 将其转换为整数,并将整数传递到 Point 构造函数中。

2
我同意 - 简单易读。有句老话说... "如果你遇到问题,觉得需要用正则表达式来解决... 那么现在你就有两个问题了"。 - Tejs

1
使用Linq可以将其简化成一行代码。
//assuming a list of strings like this
var strings = new List<String>{
   "13,2",
   "2,4"};

//get a list of points
var points = (from s in strings
             select new Point(s.split(",")[0], s.split(",")[1]))
             .ToList();

 // or Point.Parse as PK pointed out
var points = (from s in strings select Point.Parse(s)).ToList();

我正在使用Mac书写这篇文章,所以无法检查语法,但应该很接近。

公平地说,但如果你使用Linq,那实际上不是一个坏的单语句。我应该说单个语句,而不是一行代码,我会像上面那样格式化为3行。 - Tim Hoolihan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接