C#在字符串中找到完全匹配

时间:2010-11-09 07:48:32

标签: c# string find exact-match

如何在字符串中搜索完全匹配?例如,如果我有一个包含此文本的字符串:

标签
标签:
标签

我搜索标签,我只想得到第一场比赛,而不是其他两场比赛。我尝试了Contains和IndexOf方法,但他们也给了我第二和第三场比赛。

4 个答案:

答案 0 :(得分:22)

您可以使用这样的正则表达式:

bool contains = Regex.IsMatch("Hello1 Hello2", @"(^|\s)Hello(\s|$)"); // yields false
bool contains = Regex.IsMatch("Hello1 Hello", @"(^|\s)Hello(\s|$)"); // yields true

\ b是单词边界检查,如上所述,它只能匹配整个单词。

认为正则表达式应该比Linq更快。

Reference

答案 1 :(得分:3)

您可以尝试拆分字符串(在这种情况下,右侧分隔符可以是空格,但它取决于大小写),然后您可以使用equals方法查看是否存在匹配,例如:

private Boolean findString(String baseString,String strinfToFind, String separator)
{                
    foreach (String str in baseString.Split(separator.ToCharArray()))
    {
        if(str.Equals(strinfToFind))
        {
            return true;
        }
    }
    return false;
}

使用可以

findString("Label label Labels:", "label", " ");

答案 2 :(得分:1)

您可以尝试使用LINQ版本:

string str = "Hello1 Hello Hello2";
string another = "Hello";
string retVal = str.Split(" \n\r".ToCharArray(), StringSplitOptions.RemoveEmptyEntries)
                   .First( p => p .Equals(another));

答案 3 :(得分:1)

您似乎在单词之间有一个分隔符(crlf),因此您可以将分隔符作为搜索字符串的一部分包含在内。

如果没有,那么我会按照Liviu的建议去做。