I have implemented such a method:
static void Main(string[] args)
{
string s = "05 AA 06 15 14";
var pattern1 = "05 AA";
var pattern2 = "06 15";
var pattern3 = "AA ** 15";
var pattern4 = "15 14";
Console.WriteLine(CheckTextContains2(s, pattern1));
Console.WriteLine(CheckTextContains2(s, pattern2));
Console.WriteLine(CheckTextContains2(s, pattern3));
Console.WriteLine(CheckTextContains2(s, pattern4));
}
private static int CheckTextContains2(string text, string pattern)
{
if (text.Length < pattern.Length)
return -1;
for (int i = 0; i < text.Length - pattern.Length +1; i++)
{
for (int j = 0; j < pattern.Length; j++)
{
if (pattern[j] == '*')
continue;
else if (text[j + i] != pattern[j])
break;
else if (j == pattern.Length -1)
return i;
}
}
return -1;
}
The method checks if the given pattern is in the string, but ignore chars "*" and return start index.
But it seems terribly suboptimal, Can I getting it by regex?