Contains和Regex返回true但不是完全匹配

时间:2015-01-14 16:05:32

标签: c# regex contains

我很难理解如何找出病情。基本上我将列表中的信息转换为使用Contains和Regex的字符串。我需要弄清楚用户是否选择了“其他”选项,如果是,则执行某些操作。但是,在同一个列表中,还有其他值可供选择,也可以从“其他”开始。

示例数据:

  • 消防材料
  • 其他
  • 其他化学品

示例代码:

if(MaterialList.ToString().Contains("Other"))
    {   
"Do This If Other Is Selected";
    }
else
    {
"Do That If Other Isn't Selected";
    }

如果用户只选择“其他”,则工作正常,但如果用户未选择“其他”但选择“其他化学品”,则该条件仍然返回true。

我也尝试了以下内容,它的行为相同:

public static bool ExactMatch(string input, string match)
    {

    return Regex.IsMatch(input, string.Format(@"{0}", Regex.Escape(match)));
    //actually doesn't find the exact match - just a portion of the string

    }

可能不应使用包含或匹配但不确定如何解决问题。

4 个答案:

答案 0 :(得分:1)

看起来你可以改用Linq:

if (MaterialList.Any(m => m == "Other"))
    ...

答案 1 :(得分:0)

您可以在案例中使用String.EndsWith()功能

来自MSDN:

  

确定此字符串实例的结尾是否与。匹配   指定的字符串。

试试这个:

if(MaterialList.ToString().EndsWith("Other"))
{   
   "Do This If Other Is Selected";
}
else
{
   "Do That If Other Isn't Selected";
}

答案 2 :(得分:0)

为什么不使用

public static bool ExactMatch(string input, string match)
{
    return input == match;
}

或者你生病了do-everything-with-regex

答案 3 :(得分:0)

谢谢大家。想出来了。

if(MaterialsList.ToString().Split('\t').Contains("Other"))