我的格式是字符串:
例如
这个数字是地图上的点,现在我需要在点数组中解析它 类似的东西:
Point[] P = new Point[]
{
new Point { X = number1, Y = number2 },
new Point { X = number3, Y = number4 },
};
我永远不知道有多少字符串有点。 什么是解析它的最佳方法。我是从string.split开始的,但第二个问题是如何将字符串写入Points数组?
答案 0 :(得分:3)
我是从string.split
开始的
这是一个很好的起点。问题是,你为什么要停下来?
var points = someString.Split(',')
.Select(p => new Point { X = double.Parse(p.Split[' '][0]), Y = double.Parse(p.Split[' '][1]));
您可能还会包含一些错误检查以避免不必要的异常。你如何回应这些错误取决于你......
var points = new List<Point>();
var pointStrings = someString.Split(',');
foreach (var p in pointStrings)
{
var pointString = p.Split(' ');
if (pointString.Count() == 2)
{
var x = 0D;
var y = 0D;
if (!double.TryParse(pointString[0], out x))
// handle error
if (!double.TryParse(pointString[1], out y))
// handle error
points.Add(new Point { X = x, Y = y });
}
else
// handle error
}
答案 1 :(得分:2)
使用string.Split
分隔值:
string s = "238424.441451 2704909.319341,238424.441451 2704909.319341";
string[] t = s.Split(' ');
List<Point> points = new List<Point>();
foreach (string p in t)
{
string[] xy = p.Split(',');
points.Add(new Point { X = Convert.ToFloat(xy[0]), Y = Convert.ToFloat(xy[1]) });
}
Point[] pointsArray = points.ToArray();