使用百分比进行通配符搜索

本文关键字:通配符 搜索 百分比 | 更新日期: 2023-09-27 18:36:22

我在linqpad中有以下示例代码。复制/粘贴到 linqpad 中,然后选择"语言 c# 语句"以运行此语句。

目前"AB%C"仅匹配 AB C,我希望 % 像 SQL 中那样匹配零个或多个字符。

// Define Stock Items
List<StockItem> stockItems = new List<StockItem>();
stockItems.Add(new StockItem{
Id = 0,
Code = "444B",
Description = "AB C"
});
stockItems.Add(new StockItem{
Id = 0,
Code = "11221",
Description = "ABC"
});
// Regex Search of Stock Items
string searchString = "AB%C";
string regexSearch = searchString
                 .Replace("*", ".+")
                 .Replace("%", ".+")
                 .Replace("#", "''d")
                 .Replace("@", "[a-zA-Z]")
                 .Replace("?", "''w");
Regex regex = new Regex(regexSearch);
List<StockItem> results;
results = stockItems.Where(s => regex.IsMatch(s.Description)).ToList();
results.Dump();
} // Bracket defines end of logic so we can declare classes next
// StockItem Class
internal class StockItem
{ 
public int Id {get; set;}
public string Code {get; set;}
public string Description {get; set;}
// } Don't close class for linqpad!

我从这个堆栈溢出线程中获得了正则表达式

使用百分比进行通配符搜索

+的意思是"一个或多个",你需要*"零或更多"

.Replace("%", ".*")