Сравнение строк С# - соответствие целого слова
У меня две строки:
string1 = "theater is small";
string2 = "The small thing in the world";
Мне нужно проверить погоду, строка "the" присутствует в строках или нет.
Я могу использовать функцию contains, но может ли она выполнить целое словосочетание? то есть он не должен совпадать с "театром" строки1!
Ответы
Ответ 1
Простейшим решением является использование регулярных выражений и разделителя границ слова \b
:
bool result = Regex.IsMatch(text, "\\bthe\\b");
или, если вы хотите найти несоответствующую капитализацию,
bool result = Regex.IsMatch(text, "\\bthe\\b", RegexOptions.IgnoreCase);
(using System.Text.RegularExpressons
.)
В качестве альтернативы вы можете разделить текст на отдельные слова и найти результирующий массив. Тем не менее, это не всегда тривиально, потому что его недостаточно, чтобы разделить на белые пробелы; это игнорирует все знаки препинания и дает неправильные результаты. Решение состоит в том, чтобы снова использовать регулярные выражения, а именно Regex.Split
.
Ответ 2
Используйте метод Regex.IsMatch, используя \bthe\b
, \b
представляет собой разделитель границы слова.
// false
bool string1Matched = Regex.IsMatch(string1, @"\bthe\b", RegexOptions.IgnoreCase);
// true
bool string2Matched = Regex.IsMatch(string2, @"\bthe\b", RegexOptions.IgnoreCase);
Ответ 3
str.Split().Contains(word);
или
char[] separators = { '\n', ',', '.', ' ' }; // add your own
str.Split(separators).Contains(word);
Ответ 4
Вместо этого вы можете использовать регулярное выражение. Таким образом, вы можете указать, что вам нужно только пространство или конец строки в конце.
Ответ 5
если вы добавите пробел в изучаемое слово