Ade sends some code that he discovered as the culprit behind some searches taking, literally, forever to complete. Written by a senior developer at his company, I believe we can officially nominate this as the “Regular Expre-What?” Function of the Year. It's quite impressive to see nine potential endless loops in such a small function, although this still remains proof positive that (9*INFINITY) is still infinity.
private static string StripAllSearchCharacters(string Criteria)
{
int iPos = -1;
iPos = Criteria.IndexOf("*");
while (iPos != -1)
{
//ED: String.Remove() returns a string; it does not change the string itself
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("*");
}
iPos = Criteria.IndexOf("<");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("<");
}
iPos = Criteria.IndexOf(">");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf(">");
}
iPos = Criteria.IndexOf("!");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("!");
}
iPos = Criteria.IndexOf("&");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("&");
}
iPos = Criteria.IndexOf("|");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("|");
}
iPos = Criteria.IndexOf("?");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("?");
}
iPos = Criteria.IndexOf("!=");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("!=");
}
iPos = Criteria.IndexOf("=");
while (iPos != -1)
{
Criteria.Remove(iPos, 1);
iPos = Criteria.IndexOf("=");
}
return Criteria;
}
Speaking of the Function of the Year, Raymond Chen nominated one as well. And, coming soon, just in time for Halloween, the scarriest system of the year ...