How can I exactly match a string inside of a larger string?

Tuesday, July 8, 2014

I have the following enum declared:

public enum EtcMethod

On my form, I have a handful of controls with their Tag property set:

myControl1.Tag = "ACCORD";
myControl2.Tag = "COROLLA";
myControl3.Tag = "CIVIC COROLLA_S CAMRY";

Then I'm checking the controls' tags in a loop to see if any of the values are found:

private void HideControls(EtcMethod etcMethod, LayoutControlGroup lcg)
foreach (BaseLayoutItem ctl in lcg.Items)
if (ctl.GetType() == typeof (LayoutControlItem))
LayoutControlItem item = (LayoutControlItem)ctl;

if (item.Tag.ToString().IndexOf(etcMethod.ToString()) >= 0)
item.Visibility = LayoutVisibility.Always;
item.Visibility = LayoutVisibility.Never;

But the problem with this is, for example, if etcMethod is COROLLA and item.Tag.ToString() is "COROLLA_S" that'll erroneously pass the check.

How can I make sure that it'll find an exact match instead of a "partial" match? In other words, I would like it to behave as if you checked off the "Match whole word" option using Visual Studio's Find feature.

The only solution I could think of would be to check the value of the character at etcMethod.Lenght+1 and see if it's a space (indicating the beginning of another enum value) or if that position even exists (indicating the end of the tag), but that seems particularly sloppy.