C# 如何检查表示点结构的字符串变量?
C# 如何检查表示点结构的字符串变量?,c#,point,formatexception,C#,Point,Formatexception,Point.Parse(“SomeText”) 如何检查给定的字符串是否表示一个点 Parse Method Documentation是如果您实际阅读文档,您将看到Point.Parse()在三种情况下引发异常: 源不是由两个逗号或空格分隔的双精度值组成 源不包含两个数字 源包含太多分隔符 因此,您必须: 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入
Point.Parse(“SomeText”)代码>
如何检查给定的字符串是否表示一个点
Parse Method Documentation是如果您实际阅读文档,您将看到Point.Parse()在三种情况下引发异常:
- 源不是由两个逗号或空格分隔的双精度值组成
- 源不包含两个数字
- 源包含太多分隔符
因此,您必须:
- 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
- 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率李>
- 您可以自己解析每个字符串,例如使用
string.IndexOf()
和string.Substring()
(或RegEx.Match()
)和double.TryParse()
,但您基本上是在重建Point.Parse()
,并且可以更好地返回新点{X=parsedX,Y=parsedY}
如果您确实阅读了文档,您将看到Point.Parse()在三种情况下引发异常:
- 源不是由两个逗号或空格分隔的双精度值组成
- 源不包含两个数字
- 源包含太多分隔符
因此,您必须:
- 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
- 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率李>
- 您可以自己解析每个字符串,例如使用
string.IndexOf()
和string.Substring()
(或RegEx.Match()
)和double.TryParse()
,但您基本上是在重建Point.Parse()
,并且可以更好地返回新点{X=parsedX,Y=parsedY}
如果您确实阅读了文档,您将看到Point.Parse()在三种情况下引发异常:
- 源不是由两个逗号或空格分隔的双精度值组成
- 源不包含两个数字
- 源包含太多分隔符
因此,您必须:
- 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
- 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率李>
- 您可以自己解析每个字符串,例如使用
string.IndexOf()
和string.Substring()
(或RegEx.Match()
)和double.TryParse()
,但您基本上是在重建Point.Parse()
,并且可以更好地返回新点{X=parsedX,Y=parsedY}
如果您确实阅读了文档,您将看到Point.Parse()在三种情况下引发异常:
- 源不是由两个逗号或空格分隔的双精度值组成
- 源不包含两个数字
- 源包含太多分隔符
因此,您必须:
- 确保您的输入代表一个点,并且不要将虚假信息传递给该方法。我们不知道你的意见来自哪里,所以这取决于你
- 验证输入,例如使用正则表达式。这可能比不验证对性能的危害更大,但这取决于输入以及输入实际上不代表点的频率李>
- 您可以自己解析每个字符串,例如使用
string.IndexOf()
和string.Substring()
(或RegEx.Match()
)和double.TryParse()
,但您基本上是在重建Point.Parse()
,并且可以更好地返回新点{X=parsedX,Y=parsedY}
实现这一点的最快、可能也是最干净的方法是为
点实现自己的TryParse
方法。Parse
:
public bool TryParse(string source, out Point point)
{
try
{
point = Point.Parse(source);
}
catch (FormatException ex)
{
point = default(Point);
return false;
}
return true;
}
您可以这样消费:
Point point;
if (!TryParse("12, 13", out point))
{
// We have an invalid Point!
}
如果字符串不是有效点,该方法将返回false,您可以立即执行任何需要执行的操作。如果解析成功,out
参数将包含解析的点
,否则将包含点
的默认值,该值可能为(0,0)
请注意,异常在这里被禁止,但这不会给您带来任何麻烦。如果需要,您可以在设置点后重新抛出它实现这一点的最快、最干净的方法是为点实现自己的TryParse
方法。Parse
:
public bool TryParse(string source, out Point point)
{
try
{
point = Point.Parse(source);
}
catch (FormatException ex)
{
point = default(Point);
return false;
}
return true;
}
您可以这样消费:
Point point;
if (!TryParse("12, 13", out point))
{
// We have an invalid Point!
}
如果字符串不是有效点,该方法将返回false,您可以立即执行任何需要执行的操作。如果解析成功,out
参数将包含解析的点
,否则将包含点
的默认值,该值可能为(0,0)
请注意,异常在这里被禁止,但这不会给您带来任何麻烦。如果需要,您可以在设置点后重新抛出它实现这一点的最快、最干净的方法是为点实现自己的TryParse
方法。Parse
:
public bool TryParse(string source, out Point point)
{
try
{
point = Point.Parse(source);
}
catch (FormatException ex)
{
point = default(Point);
return false;
}
return true;
}
<