如何在ASP.NET上使用c#进行通配符搜索
本文关键字:通配符 搜索 ASP NET | 更新日期: 2023-09-27 17:49:37
我使用mvc, c#, .net4.0
我有一个包含搜索字符串的对象,我可以用它来搜索相关对象,即4个对象:
[car:vw:engine:1800]
[car:vw:engine:Diesel 1800]
[car:vw:engine:1600]
[car:ford:engine:1800]
我想搜索引擎为"vw"answers"1800"的对象。
我可以试试Contains():
SearchString.Contains("vw:engine:1800")
只返回一个对象。
我需要这样的东西:
SearchString.Contains("vw:engine:*1800")
其中*是一个通配符,它将拾取:
[car:vw:engine:1800]
[car:vw:engine:Diesel 1800]
目前唯一的解决方法是:
SearchString.Contains("vw:engine:1800") or
SearchString.Contains("vw:engine:Diesel 1800")
如果没有Contains()本身,是否有一种简单的方法可以使用主流的。net函数如Contains()来做到这一点?
我使用这样的搜索字符串有一个很好的理由,但这不是问题的一部分。
可以使用正则表达式检查SearchString
是否匹配。.*
表示零个或多个字符,用于代替通配符。
string pattern = @"^'[car:vw:engine:.*1800]$";
bool matches = Regex.IsMatch(SearchString, pattern);
一般来说我更喜欢正则表达式。
在你的特殊情况下,你可以这样写:
string car1 = "[car:vw:engine:Diesel 1800]";
string car2 = "[car:vw:engine:1800]";
var tokens1 = car1.Substring(1, car1.Length - 2).Split(':');
var tokens2 = car2.Substring(1, car2.Length - 2).Split(':');
bool IsMatch1 = tokens1[3].EndsWith("1800");
bool IsMatch2 = tokens2[3].EndsWith("1800");