我正在使用MVC3,C#,。net4.0
我有包含搜索字符串的对象,我可以用它来搜索相关对象,即4个对象:
[car:vw:engine:1800]
[car:vw:engine:Diesel 1800]
[car:vw:engine:1600]
[car:ford:engine:1800]
我想搜索有" vw"和" 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()本身。
我有充分的理由使用这样的搜索字符串,但这不是问题的一部分。
答案 0 :(得分:3)
您可以使用正则表达式来检查SearchString
是否匹配。 .*
表示零个或多个字符,用于代替您的通配符。
string pattern = @"^\[car:vw:engine:.*1800]$";
bool matches = Regex.IsMatch(SearchString, pattern);
答案 1 :(得分:1)
一般来说,我更喜欢正则表达式 在您的特定情况下,您可以使用以下内容:
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");