根据"%"搜索字符串

本文关键字:quot 字符串 搜索 根据 | 更新日期: 2023-09-27 18:11:42

我正在尝试编写一个c#搜索函数,该函数支持SQL中的"%",如搜索操作符。例如,

"%m%"将匹配下面的所有字符串。

    一些我
  • 等。

"%m%e"将匹配类似"some"的字符串。

根据"%"搜索字符串

static bool Like(string expression, string value)
{
    return Regex.IsMatch(value, "^" + 
        Regex.Escape(expression).Replace("%", @"['s'S]*?") + "$", 
        RegexOptions.IgnoreCase);
}
public bool SqlWildcardMatch(string input, string sqlLikePattern)
{
     sqlLikePattern = Regex.Replace(sqlLikePattern, "^([^%])", "^$1");
     sqlLikePattern = Regex.Replace(sqlLikePattern, "([^%])$", "$1$$");
     return Regex.IsMatch(input, string.Replace(sqlLikePattern, "%", ".*"));
}

这个函数可能需要改进以确保sqlLikePattern不会产生无效的正则表达式模式,但可以将其视为一个起点。

如果你也想有SQL的LIKE处理下划线的方式,你可以使用我的答案c#版本的SQL LIKE,如果没有,你可以删除位Replace('_', '.')

您可以使用正则表达式实现这一点。

请看:

http://www.codeproject.com/KB/recipes/wildcardtoregex.aspx

使用regex .*m.*