【发布时间】:2014-07-08 18:23:03
【问题描述】:
我声明了以下枚举:
public enum EtcMethod
{
ACCORD,
COROLLA,
COROLLA_S,
CAMRY,
CIVIC
}
在我的表单上,我有一些带有 Tag 属性集的控件:
myControl1.Tag = "ACCORD";
myControl2.Tag = "COROLLA";
myControl3.Tag = "CIVIC COROLLA_S CAMRY";
然后我在循环中检查控件的标签以查看是否找到任何值:
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;
else
item.Visibility = LayoutVisibility.Never;
}
}
}
但问题是,例如,如果 etcMethod 是 COROLLA 并且 item.Tag.ToString() 是 "COROLLA_S" 会错误地通过检查。
如何确保它会找到完全匹配而不是“部分”匹配?换句话说,我希望它的行为就像您使用 Visual Studio 的查找功能检查了“匹配整个单词”选项一样。
我能想到的唯一解决方案是检查etcMethod.Lenght+1 处字符的值,看看它是否是空格(表示另一个枚举值的开头)或者该位置是否存在(表示结束标记),但这似乎特别草率。
【问题讨论】:
-
在较大的字符串中找到匹配的起始索引,然后:
largerString.Substring(indexOfMatch, lengthOfMatch)