搜索字符串“%”

时间:2011-10-20 10:10:03

标签: c# .net regex .net-2.0 c#-2.0

我正在尝试编写一个c#搜索函数,它支持SQL中的“%”,就像搜索中的运算符一样。 例如,

“%m%”将匹配以下所有字符串。

  • 一些
  • 总和
  • 等。

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

5 个答案:

答案 0 :(得分:5)

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

答案 1 :(得分:3)

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不会产生无效的正则表达式模式,但请将其视为起点。

答案 2 :(得分:1)

如果你想让SQL的LIKE处理下划线,你可以使用我对C# Version Of SQL LIKE的回答,如果没有,你可以删除Replace('_', '.')位。

答案 3 :(得分:0)

你可以意识到使用正则表达式。

请看一下:

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

答案 4 :(得分:0)

使用regex .*m.*

怎么样?