需要比较具有一个或多个单词动态的字符串

时间:2013-06-06 08:47:25

标签: c# string

我是c#(Pattern)中的验证字符串。

验证的是,它包含一个或多个单词动态

例如:

第一个字符串 - 故障单更新 - ID:新,优先级为:在GSD中为您分配新的故障单/操作项

第二个字符串 - 故障单更新 - ID:,优先级为:在GSD中为您分配了新的故障单/操作项

我的数据库中有第二个字符串,我用替换了动态字,它可以是任何内容。

如果第一个字符串与第二个字符串中给出的模式匹配,则验证第一个字符串。

我知道可以使用字符串拆分操作完成,但我们是否有任何替代方法可以提高效率,因为拆分操作我们很重,就像我们可以使用正则表达式或其他东西一样。

IF第一个字符串是: AnyWordWithNumbers 票证更新-ID: AnyWordWithNumbers ,优先级为: AnyWordWithNumbers 为您分配新的票证/操作项在GSD。

所以这个字符串是有效的.. IF第一个字符串是: AnyWordWithNumbers Tt更新ID: AnyWordWithNumbers 优先级: AnyWordWithNumbers 在GSD中为您分配新的票证/操作项< / p>

最后一个(。)丢失了,并且故障单的拼写错误,无效。

不是:用粗体字标记可以是任何东西

3 个答案:

答案 0 :(得分: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));
}

答案 1 :(得分:0)

在正则表达式中,\w代表字母,下划线和数字。所以你可以使用:

进行测试
If (Regex.IsMatch(input, @"^\w+ Ticket Update- ID:\w+ with Priority:\w+ A New ticket/action item is assigned to you in GSD\.$") {
}

如果它必须是同一个单词三次,您可以使用之前匹配的组号\n

If (Regex.IsMatch(input, @"^(\w+) Ticket Update- ID:\1 with Priority:\1 A New ticket/action item is assigned to you in GSD\.$") {
}

如果您想允许不同的空格,可以使用\s*代表任意数量的空格,或\s+代表至少一个空格:

If (Regex.IsMatch(input, @"^\s*\w+\s+Ticket Update- ID\s*:\s*\w+\s+with Priority\s*:\s*\w+\s+A New ticket/action item is assigned to you in GSD\.$") {
}

答案 2 :(得分: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);