簡體   English   中英

我如何檢查該字符串變量表示一個點結構?

[英]how can i check that string variable represent a point struct?

Point.Parse("SomeText");

如何檢查給定的字符串是否表示一個點?

解析方法文檔在這里

實現此目標的最快且可能最干凈的方法是為Point.Parse實現自己的TryParse方法:

    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參數將包含已解析的Point ,否則將包含Point的默認值,該默認值可能是(0,0)。

請注意,這里例外已被禁止,但這不會給您帶來任何麻煩。 如果需要,您可以在設置point之后將其重新拋出。

如果您確實閱讀了文檔,則會看到Point.Parse()在以下三種情況下引發了異常:

  • source不是由兩個逗號或空格分隔的double值組成。
  • 源不包含兩個數字。
  • 源包含太多定界符。

因此,您必須:

  • 確保您的輸入代表一個點,並且不要將虛假信息傳遞給該方法。 我們不知道您的輸入來自哪里,所以這取決於您。
  • 驗證您的輸入,例如使用正則表達式。 這可能會比不進行驗證更多地損害性能,但這取決於輸入以及輸入實際上不代表點的頻率。
  • 自己解析每個字符串,例如,使用string.IndexOf()string.Substring() (或RegEx.Match() )和double.TryParse() ,但是基本上是在重建Point.Parse()並可以更好地返回new Point { X = parsedX, Y = parsedY }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM