字符串到点阵列

时间:2014-06-24 11:46:44

标签: c#

我的格式是字符串:

  • 号码2,号码3号码等...

例如

  • 238424.441451 2704909.319341,238424.441451 2704909.319341

这个数字是地图上的点,现在我需要在点数组中解析它 类似的东西:

Point[] P = new Point[] 
{ 
    new Point { X = number1, Y = number2 }, 
    new Point { X = number3, Y = number4 }, 
};

我永远不知道有多少字符串有点。 什么是解析它的最佳方法。我是从string.split开始的,但第二个问题是如何将字符串写入Points数组?

2 个答案:

答案 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();