Let's say you had input in the form of field=value, and you wanted to pick that "value" part off. In C#, you'd likely just use String.Split and call it a day. But you're not RK's co-worker.
public string FilterArg(string value)
{
bool blAction;
if (value.Contains('='))
blAction = false;
else
blAction = true;
string tmpValue = string.Empty;
foreach (char t in value)
{
if (t == '=')
{
blAction = true;
}
else if (t != ' ' && blAction == true)
{
tmpValue += t;
}
}
return tmpValue;
}
If the input contains an =, we set blAction to true. Then we iterate across our input, one character at a time. If the character we're on is an =, we… set blAction to true. Otherwise, if the character we're on is not a space, and blAction is true, we append the current character to our output.
I opened by suggesting we were going to look at a home-grown split function, because at first glance, that's what this code looks like. In practice, though, it's a bizarre way to filter your input: if the input contains an = we return the input, if the input does not, we return an empty string.
Did this start as an attempt at just splitting a string? It seems like it, given how central the foreach loop is. I feel like the developer started coding a split function, got confused, and ended up with a mess that doesn't do what it was likely supposed to do.
This post originally appeared on The Daily WTF.
