我在创建映射SQL Server like
子句的正则表达式时遇到问题。
让我们举个例子:
我的收藏集中有字符串 C2-513101-0045 ,我想过滤我的收藏以通过输入以下字符串来获取该字符串: C2-%-0045 或 C2-51%等
我已经尝试过了...
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);
}
}
...,还尝试对其进行修改。没有结果。
如何实现过滤字符串“类似于sql”?
答案 0 :(得分:1)
public static class MyStringExtensions
{
public static bool Like(this string toSearch, string toFind)
{
Regex findRegex = new Regex(Regex.Escape(toFind).Replace("%", ".*"));
return findRegex.IsMatch(toSearch);
}
}
尝试上述方法。首先,我使用Regex.Escape
转义了所有元字符。然后将%
替换为.*