gpt4 book ai didi

C# 版本的 SQL LIKE

转载 作者:IT王子 更新时间:2023-10-29 03:59:16 26 4
gpt4 key购买 nike

有什么方法可以在 C# 中搜索字符串中的模式吗?

像 Sql LIKE 这样的东西会很有用。

最佳答案

正则表达式允许 LIKE 允许的所有内容,甚至更多,但具有完全不同的语法。然而,由于 LIKE 的规则非常简单(其中 % 表示零个或多个字符,_ 表示一个字符),并且两者LIKE 参数和正则表达式用字符串表示,我们可以创建一个正则表达式,它接受一个 LIKE 参数(例如 abc_ef% *usd)和将其转换为等效的正则表达式(例如 \Aabc.ef.*\*usd\z):

@"\A" + new Regex(@"\.|\$|\^|\{|\[|\(|\||\)|\*|\+|\?|\\").Replace(toFind, ch => @"\" + ch).Replace('_', '.').Replace("%", ".*") + @"\z"

从中我们可以构建一个 Like() 方法:

public static class MyStringExtensions
{
public static bool Like(this string toSearch, string toFind)
{
return new Regex(@"\A" + new Regex(@"\.|\$|\^|\{|\[|\(|\||\)|\*|\+|\?|\\").Replace(toFind, ch => @"\" + ch).Replace('_', '.').Replace("%", ".*") + @"\z", RegexOptions.Singleline).IsMatch(toSearch);
}
}

因此:

bool willBeTrue = "abcdefg".Like("abcd_fg");
bool willAlsoBeTrue = "abcdefg".Like("ab%f%");
bool willBeFalse = "abcdefghi".Like("abcd_fg");

关于C# 版本的 SQL LIKE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5417070/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com