Get only Whole Words from a .Contains() statement

后端 未结 4 516
再見小時候
再見小時候 2020-12-20 15:09

I\'ve used .Contains() to find if a sentence contains a specific word however I found something weird:

I wanted to find if the word "hi" was present in a se

4条回答
  •  天涯浪人
    2020-12-20 16:03

    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 data = new List {
    "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

提交回复
热议问题