C# найти точное совпадение в строке



Как я могу найти точное соответствие в строке? Например, если бы у меня была строка с таким текстом:



Метка

метка:

метки



И я ищу ярлык, Я хочу получить только первое совпадение, а не два других. Я попробовал метод Contains и IndexOf, но они также дают мне 2-е и 3-е совпадения.

856   4  

4 ответов:

Можно использовать следующее регулярное выражение:

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

\b-это проверка границ слов, и при использовании, как указано выше, он сможет сопоставлять только целые слова.

Я думаю, что версия регулярного выражения должна быть быстрее, чем Linq.

Ссылка

Вы можете попробовать разделить строку (в этом случае правильный разделитель может быть пробелом, но это зависит от случая), а затем вы можете использовать метод 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", " ");

Похоже, что у вас есть разделитель (crlf) между словами, поэтому вы можете включить разделитель в строку поиска.

Если нет, то я бы согласился с предложением Ливиу.

Вы можете попробовать версию LINQ:

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

Comments

    Ничего не найдено.