3

私は小さな問題に対する簡単な解決策を持っていますが、初心者の開発者として、何かを行うためのより正確でより良い方法を常に学びたいと思っています。現時点では、多かれ少なかれこのような文字列を取得しています...

いくつかのランダムなテキスト、参照番号: Supp-1234 およびいくつかのランダムなテキスト...

このシナリオを想定して、参照番号の数字部分のみを取得したい場合は、次のようにすることができます...

int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
myIssueId = firstCharacter != -1 ? mailItem.Subject.Substring(firstCharacter + 5, 4) : "";

しかし、ここで、参照番号 Supp-12345 を受け取ったとします。これは機能しません。このようなものを試すことができます...

int firstCharacter = mystring.IndexOf("Supp-", StringComparison.InvariantCultureIgnoreCase);
if (firstCharacter != -1)
{
    string temp = mystring.Substring(firstCharacter + 5, 5);
    try
    {
        int x = Convert.ToInt32(temp); // to ensure it is indeed a number
    }
    catch (Exception)
    {
        temp = mystring.Substring(firstCharacter + 5, 4); // it is 4 digits, not 5
    }
    myIssueId = temp;
}

今、私の質問はこれです。このコードを改善するにはどうすればよいですか? 私の好みには少し面倒です。どんなアイデアでも大歓迎です。

4

1 に答える 1

3

文字列「Supp-」が前にある数字を探しています。これは、次のような正規表現に変換できます。

(<=Supp-)\d+

のように使用しますmyIssueId = Regex.Match(input, "(<=Supp-)\d+").Value

于 2013-08-12T12:07:30.923 に答える