0

私はc#(Pattern)の検証文字列です。

バリデーションが必要なのは、1 つ以上の動的な単語が含まれていることです。

例えば ​​:

最初の文字列 -新しいチケットの更新 - ID:New  with Priority: New 新しいチケット/アクション アイテムが GSD で割り当てられます。

2 番目の文字列 - #チケットの更新 - ID: # 優先度: # 新しいチケット/アクション アイテムが GSD で割り当てられます。

DB に 2 番目の文字列があり、動的な単語を#に置き換えました。何でもかまいません。

そして、最初の文字列は、2 番目の文字列で指定されたパターンと一致する場合に検証されます。

文字列分割操作を使用して実行できることはわかっていますが、正規表現などで実行できるように、分割操作が重いため、これを効率的に行うための代替方法はありますか。

IF First string is: AnyWordWithNumbers Ticket Update- ID: AnyWordWithNumbers  with Priority: AnyWordWithNumbers 新しいチケット/アクション アイテムが GSD で割り当てられます。

したがって、この文字列は有効です.. IF 最初の文字列は次のとおりです: AnyWordWithNumbers Tt Update- ID: AnyWordWithNumbers  with Priority: AnyWordWithNumbers  A New ticket/action item is assigned to you in GSD

最後の (.) が欠落しており、チケットのスペルが正しくないため、有効ではありません。

Not : 太字のマークは何でもかまいません

4

3 に答える 3

1

この正規表現を使用できます:

private static readonly Regex TestRegex = new Regex(@"^([A-Za-z0-9]+) Ticket Update- ID:\1 with Priority:\1 A New ticket/action item is assigned to you in GSD\.$");

public bool IsValid(string testString)
{ 
   return (TestRegex.IsMatch(testString));
}
于 2013-06-06T09:09:09.593 に答える
0

以下の方法では、期待される結果が得られます。

static bool IsMatch(string templateString, string input)
{
    string[] splittedStr = templateString.Split('#');
    string regExString = splittedStr[0];
    for (int i = 1; i < splittedStr.Length; i++)
    {
        regExString += "[\\w\\s]*" + splittedStr[i];
    }

    Regex regEx = new Regex(regExString);
    return regEx.IsMatch(input);
}

上記の方法を次のように使用します。

string templateString = "# Ticket Update- ID:# with Priority:# A New ticket/action item is assigned to you in GSD";
string testString = "New Ticket Update- ID:New with Priority:New A New ticket/action item is assigned to you in GSD";
bool test = IsMatch(templateString, testString);
于 2013-06-06T09:18:29.813 に答える