在字符串中查找确切的单词

时间:2011-08-09 15:32:05

标签: c# string linq-to-entities

如何判断字符串是否包含我要查找的确切字词?

例子:“这是我的文字”;寻找的词:“文字”;发现:是的。

例子:“这些是我的文本”;寻找的词:“文字”;发现:没有。

  • 它在linq to entities查询中,所以正则表达式不起作用?

修改

这或多或少是我现在正在做的事情,我想用一个仅在完全匹配时返回的函数替换它。

    using (Model.Manager ctx = new Model.Manager())
    {
        var result = from p in ctx.Companies where p.Name.Contains(workLookingFor) select p;        
    }
到目前为止

解决方案:

我可以在我的数据库上使用.Contains()并对从DB中提取的结果使用RegEx。由于完全匹配总是在.Contains()(我仍然需要)的更广泛的结果内,这可能是一个很好的解决方案

2 个答案:

答案 0 :(得分:2)

这对我有用。它并不完美但可能有所帮助。

 public static  bool matchWholeWord(string test, string search)
        {
            var index = test.IndexOf(search);
            if (index == -1)
                return false;

            var after = index + search.Length;
            if (after == test.Length)
                return true;

            return !char.IsLetterOrDigit(test[after]);
        }
你的代码中的

using (Model.Manager ctx = new Model.Manager())
    {
        var result = from p in ctx.Companies 
        where matchWholeWord(p.Name, workLookingFor) 
        select p;        
    }

答案 1 :(得分:0)

我不得不使用与此类似的东西来实现最近使用LINQ的搜索算法。我发现有关组合LINQ and Regular Expressions的MSDN文章以及使用空格标记来识别空格的正则表达式是有用的。通过使用我的搜索参数构造正则表达式并将其组合到我的LINQ表达式中,我最终得到了我需要的东西。