通过使用'%'char键入子字符串来过滤字符串集合

时间:2018-07-26 05:47:40

标签: c# regex

我在创建映射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”?

1 个答案:

答案 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转义了所有元字符。然后将%替换为.*