我必须同意塞巴斯蒂安的评论。这可以使用简单的Split
操作来完成。
private static bool Check(string input)
{
int count = 0;
foreach (string segment in input.Split('~'))
{
string[] tokens = segment.Split('*');
if (tokens[0] == "AAA")
{
count++;
if (count == 3)
{
if (tokens[3] == "63") return true;
else return false;
}
}
}
return false;
}
编辑:既然你想要更少的代码行,那么 LINQ 怎么样?
private bool Check(string input)
{
return input.Split('~').Select(x => x.Split('*')).Any(x => x.Length >= 4 && x[0].Equals("AAA") && x[3].Equals("63"));
}
EDIT2:为了完整起见,这里还有一个正则表达式解决方案:
private bool Check(string input)
{
return Regex.IsMatch(input, @".*~AAA\*([^\*~]*\*){2}63.*");
}