从字符串转换为system.drawing.point C#(Convert from string

2019-09-16 20:13发布

我想从字符串转换{X=-24,Y=10}其通过产生Point.ToString(); 再点吗?

我省在节能模式XML文件中的字符串值,我想读给在读模式再次指向。

Answer 1:

var myStringWhichCantBeChanged="{X=-24,Y=10}";
var g=Regex.Replace(myStringWhichCantBeChanged,@"[\{\}a-zA-Z=]", "").Split(',');

Point pointResult = new Point(
                  int.Parse (g[0]),
                  int.Parse( g[1]));


Answer 2:

System.Drawing.Point没有定义Parse在所有的方法-你需要编写自己的,可以采取这种格式,并返回一个Point结构。

System.Windows.Point确实有Parse方法可能更适合您的需求。

但是,因为你是输出到XML,应该是需要的这种非。 你应该序列化和deserializng对象图,这将自动照顾这个没有你不必担心解析和格式化。



Answer 3:

你可以试试这个Point.Parse

Point pointResult = Point.Parse("-24,10");


Answer 4:

我今天需要这个功能,我自己,所以我只是编码它。 这里是一个非常挑剔的解析器使用“的TryParse”的做法。 我不喜欢我所说的“懒惰”解析其中“blah4,9anything”将得到解析为一个点。 而且我不喜欢抛出错误。 在'的TryParse的数据类型的方法是非常强大的对我。 因此,这里是我的实现对任何使用。 我唯一的要求是,如果您发现错误,请让我知道! :)

public static bool TryParsePoint(string s, out System.Drawing.Point p)
{   p = new System.Drawing.Point();
    string s1 = "{X=";
    string s2 = ",Y=";
    string s3 = "}";
    int x1 = s.IndexOf(s1, StringComparison.OrdinalIgnoreCase);
    int x2 = s.IndexOf(s2, StringComparison.OrdinalIgnoreCase);
    int x3 = s.IndexOf(s3, StringComparison.OrdinalIgnoreCase);
    if (x1 < 0 || x1 >= x2 || x2 >= x3) { return false; }
    s1 = s.Substring(x1 + s1.Length, x2 - x1 - s1.Length);
    s2 = s.Substring(x2 + s2.Length, x3 - x2 - s2.Length); int i = 0;
    if (Int32.TryParse(s1, out i) == false) { return false; } p.X = i;
    if (Int32.TryParse(s2, out i) == false) { return false; } p.Y = i;
    return true;
} // public static bool TryParsePoint(string s, out System.Drawing.Point p)

请注意,您可能还需要删除或更改publicstatic方法的改性剂。 但我用的程序类的方法,所以我的需要是public static 。 适合自己的寿。



Answer 5:

汉斯帕桑特有正确的解决办法:不要使用Point.ToString()它给你疯了,不能再利用的字符串(MSDN称之为“ 人类可读 ”)。 使用PointConverter类代替。

要生成的字符串:

Dim myPoint As New Point(0, 0)
Dim pointConverter As System.ComponentModel.TypeConverter = _
    System.ComponentModel.TypeDescriptor.GetConverter(GetType(Point))
Dim pointAsString As String = pointConverter.ConvertToString(myPoint)

并解释上面的字符串:

Dim pointConverter As System.ComponentModel.TypeConverter = _
    System.ComponentModel.TypeDescriptor.GetConverter(GetType(Point))
Dim myNewPoint As New Point = pointConverter.ConvertFromString(pointAsString)


Answer 6:

看到PointConverter ConvertFrom方法。



文章来源: Convert from string to system.drawing.point c#