1

我需要一个这样的搜索函数:该函数接受具有多种类型通配符的所有字符串:

* or % >>> can replace one or more characters
# >>> used to replace a number
@ >>> used to replace an alphabet
? >>> used to replace a character (can be both number and alphabet)

据我所知,在 LINQ 中有 3 个用于搜索字符串的函数:StartsWith、EndsWith 和 Contains。在 SQL 查询中,LIKE 有 2 种类型:% 表示一个或多个字符,_ 表示仅一个字符。那么,我该如何解决这个问题呢?

非常感谢

4

1 回答 1

6

您可以使用正则表达式并将通配符替换为正则表达式。这是一个例子。

    IEnumerable<string> Search(IEnumerable<string> data, string q)
    {
        string regexSearch = q
            .Replace("*", ".+")
            .Replace("%", ".+")
            .Replace("#", "\\d")
            .Replace("@", "[a-zA-Z]")
            .Replace("?", "\\w");

        Regex regex = new Regex(regexSearch);

        return data
            .Where(s => regex.IsMatch(s));
    }
于 2013-09-15T16:04:56.197 回答