针对“%”搜索字符串

发布于 2024-12-11 06:12:18 字数 184 浏览 1 评论 0原文

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

“%m%”将匹配所有字符串,如下所示。

  • some
  • me
  • sum
  • 等..

“%m%e”将匹配诸如“some”之类的字符串。

I am trying to write a c# search function that supports "%" in SQL like operator in searching.
For eg,

"%m%" will match all strings like below.

  • some
  • me
  • sum
  • etc..

"%m%e" will match strings something like "some".

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

独自唱情﹋歌 2024-12-18 06:12:18
static bool Like(string expression, string value)
{
    return Regex.IsMatch(value, "^" + 
        Regex.Escape(expression).Replace("%", @"[\s\S]*?") + "$", 
        RegexOptions.IgnoreCase);
}
static bool Like(string expression, string value)
{
    return Regex.IsMatch(value, "^" + 
        Regex.Escape(expression).Replace("%", @"[\s\S]*?") + "$", 
        RegexOptions.IgnoreCase);
}
沒落の蓅哖 2024-12-18 06:12:18
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 不会产生无效的正则表达式模式,但请将其视为起点。

public bool SqlWildcardMatch(string input, string sqlLikePattern)
{
     sqlLikePattern = Regex.Replace(sqlLikePattern, "^([^%])", "^$1");
     sqlLikePattern = Regex.Replace(sqlLikePattern, "([^%])$", "$1$");

     return Regex.IsMatch(input, string.Replace(sqlLikePattern, "%", ".*"));
}

This function will likely need refining to ensure sqlLikePattern doesn't produce an invalid regex pattern, but consider it a starting point.

旧时光的容颜 2024-12-18 06:12:18

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

If you also want to have the way SQL's LIKE treats underscores, you could use my answer to C# Version Of SQL LIKE and if not, you could remove the bit Replace('_', '.').

演出会有结束 2024-12-18 06:12:18

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

请查看:

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

You could realize that using regular expressions.

Please have a look at:

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

摘星┃星的人 2024-12-18 06:12:18

使用 正则表达式 .* 怎么样?米.*

what about using regex .*m.*

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文