如何在 C# 中将字符串中的值转换为 System.Windows.Point?
How to convert values in string into System.Windows.Point in C#?
我正在使用 C#,我有一个字符串,其值类似于 strResult = "(30,40),(189,339),(30,40),(60,30)"。我想将这些值转换为 System.Windows.Point 。
因此 point[0].x = 30 的第一个值,point[0].y = 40 等等。
{
string[] numbers = System.Text.RegularExpressions.Regex.Split(strResult, @"[(),]+");
for (int i = 0; i < numbers; i++)
{
System.Windows.Point point = // do something
drawingContext.DrawEllipse(Brushes.Green, null, new System.Windows.Point(point.X, point.Y), 3, 3);
}
有人可以帮忙吗?提前致谢:)
可以使用 Convert.ToInt32
或 Int32.Parse
(或许多其他选项)将字符串解析为整数。
小心你的正则表达式。该特定代码将 return 数组的第一个和最后一个元素为空:"", "30", "40", ..., "60", "30", ""
.
您可以在每次迭代中为单个点解析 2 个元素。我处理了第一个和最后一个空元素,但最好正确重写正则表达式:
for (int i = 1; i < numbers.Length - 1; i += 2)
{
System.Windows.Point point = new System.Windows.Point(Convert.ToInt32(numbers[i]), Convert.ToInt32(numbers[i + 1]));
drawingContext.DrawEllipse(Brushes.Green, null, new System.Windows.Point(point.X, point.Y), 3, 3);
}
下面是一个更适合您的场景的正则表达式:\((.*?)\)
这将为您提供所有点的数组 x, y
。现在您只需将字符串拆分为 ,
和 trim 结果。最后,遍历点数组并使用解析的 int 值创建一个新点。
var pointString = "(30,40),(189,339),(30,40),(60,30)";
var ps = Regex.Split(pointString, @"\((.*?)\)");
foreach (var p in ps) {
if (!string.IsNullOrEmpty(p)) {
var px = p.Split(',');
var x = int.Parse(px[0].Trim());
var y = int.Parse(px[1].Trim());
var point = new Point(x, y);
Console.WriteLine(point);
}
}
我正在使用 C#,我有一个字符串,其值类似于 strResult = "(30,40),(189,339),(30,40),(60,30)"。我想将这些值转换为 System.Windows.Point 。 因此 point[0].x = 30 的第一个值,point[0].y = 40 等等。
{
string[] numbers = System.Text.RegularExpressions.Regex.Split(strResult, @"[(),]+");
for (int i = 0; i < numbers; i++)
{
System.Windows.Point point = // do something
drawingContext.DrawEllipse(Brushes.Green, null, new System.Windows.Point(point.X, point.Y), 3, 3);
}
有人可以帮忙吗?提前致谢:)
可以使用 Convert.ToInt32
或 Int32.Parse
(或许多其他选项)将字符串解析为整数。
小心你的正则表达式。该特定代码将 return 数组的第一个和最后一个元素为空:"", "30", "40", ..., "60", "30", ""
.
您可以在每次迭代中为单个点解析 2 个元素。我处理了第一个和最后一个空元素,但最好正确重写正则表达式:
for (int i = 1; i < numbers.Length - 1; i += 2)
{
System.Windows.Point point = new System.Windows.Point(Convert.ToInt32(numbers[i]), Convert.ToInt32(numbers[i + 1]));
drawingContext.DrawEllipse(Brushes.Green, null, new System.Windows.Point(point.X, point.Y), 3, 3);
}
下面是一个更适合您的场景的正则表达式:\((.*?)\)
这将为您提供所有点的数组 x, y
。现在您只需将字符串拆分为 ,
和 trim 结果。最后,遍历点数组并使用解析的 int 值创建一个新点。
var pointString = "(30,40),(189,339),(30,40),(60,30)";
var ps = Regex.Split(pointString, @"\((.*?)\)");
foreach (var p in ps) {
if (!string.IsNullOrEmpty(p)) {
var px = p.Split(',');
var x = int.Parse(px[0].Trim());
var y = int.Parse(px[1].Trim());
var point = new Point(x, y);
Console.WriteLine(point);
}
}