C# найти точное совпадение в строке
Как я могу найти точное соответствие в строке? Например, если бы у меня была строка с таким текстом:
Метка
метка:
метки
И я ищу ярлык, Я хочу получить только первое совпадение, а не два других. Я попробовал метод Contains и IndexOf, но они также дают мне 2-е и 3-е совпадения.
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