[英]Parse PointF From String in C#?
好吧,我有點保存到文件看起來像這樣:
PointF p = new PointF(109.1679, 162.4473);
string lineInFile = p.ToString();
// in file it looks like this then:
{X=109,1679, Y=162,4473}
好吧,我現在不能使用linq和.NET Framework 4.5。 我需要一個純C#的解決方案,最高可達4.0。 那么我該如何解析這一點呢?
請注意,它是PointF
而不是Point
並且特定於語言的格式設置使點在字符串中顯示為逗號。
{ X = 109,1679 ,Y = 162,4473 }
您可以使用正則表達式再次解析格式:
using System.Text.RegularExpressions;
Match m = Regex.Match("{X=109,1679, Y=162,4473}", "{X=(\\d+.\\d+), Y=(\\d+.\\d+)}");
PointF p = new PointF(float.Parse(m.Groups[1].Value), float.Parse(m.Groups[2].Value));
請注意,我使用了.
檢查小數分隔符,因為ToString()
的輸出將根據區域設置而變化。
我假設您無法更改輸出文件的文件結構,否則您可以使用內置函數進行XML或JSON序列化。
這是使用string.Split
和float.TryParse
的字符串方法版本:
string[] tokens = lineInFile.Split(new[]{", "}, StringSplitOptions.RemoveEmptyEntries);
string valueX = tokens[0].Split('=')[1];
string valueY = tokens[1].Split('=')[1].TrimEnd('}');
float x; float y;
if (float.TryParse(valueX, out x) && float.TryParse(valueY, out y))
{
PointF parsed = new PointF(x, y);
}
請注意,只有在PointF.ToString
上使用相同的NumberDecimalSeparator
將字符串解析為float時,它才PointF.ToString
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.