Я использую 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")
Есть ли простой способ сделать это, используя обычную функцию .net, такую как Contains (), если не сам Contains ().
Для меня есть веская причина использовать такую строку поиска, но это не часть вопроса.
2 ответа
Вы можете использовать регулярные выражения, чтобы проверить, совпадает ли 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");
Похожие вопросы
Новые вопросы
c#
C# (произносится как «see Sharp») — это высокоуровневый мультипарадигменный язык программирования со статической типизацией, разработанный Microsoft. Код C# обычно нацелен на семейство инструментов и сред выполнения Microsoft .NET, которое включает в себя .NET, .NET Framework, .NET MAUI и Xamarin среди прочих. Используйте этот тег для ответов на вопросы о коде, написанном на C#, или о формальной спецификации C#.
Regex.IsMatch()
?