Get only Whole Words from a .Contains() statement

Here's a Regex solution:

Regex has a Word Boundary Anchor using \b

Also, if the search string might come from user input, you might consider escaping the string using Regex.Escape

This example should filter a list of strings the way you want.

string findme = "hi";

string pattern = @"\b" + Regex.Escape(findme) + @"\b";

Regex re = new Regex(pattern,RegexOptions.IgnoreCase);

List<string> data = new List<string> {
"The child wanted to play in the mud",
"Hi there",
"Hector had a hip problem"
};

var filtered = data.Where(d => re.IsMatch(d));

DotNetFiddle Example


Try using Regex:

if (Regex.Match(sentence, @"\bhi\b", RegexOptions.IgnoreCase).Success)
{
    //
};

This works just fine for me on your input text.

Tags:

C#

.Net

Contains