s = 'nowIsTheTime' s.split /(?=[A-Z])/ => ["now", "Is", "The", "Time"]
?=pattern
является примером позитивного взгляда. По сути, он соответствует точке в строке прямо перед шаблоном . Он не потребляет символы, то есть не включает шаблон как часть совпадения. Другой пример:irb> 'streets'.sub /t(?=s)/, '-' => "stree-s"
В этом случае
s
совпадает (только второйt
совпадает), но не заменяется. Благодаря @Bryce и его regexp doc link. Брайс Андерсон добавляет объяснение:
?=
в начале()
группы совпадений называется позитивным прогнозом, , что является лишь способом сказать, что в то время как regex смотрит на символы, чтобы определить, совпадает ли он, но не делает их частью матча.split()
обычно ест промежуточные символы, но в этом случае само совпадение пустое, поэтому там ничего нет.
CarList = CarList.OrderBy( x => x.CreationDate ).ToList();
Во-первых, используя сокращенный синтаксис, представленный в .Net 3.5, вы можете сделать это определение класса намного короче:
public class CarSpecs
{
public CarSpecs() { }
public String CarName { get; set;
public String CarMaker { get; set; }
public DateTime CreationDate { get; set; }
}
Это будет скомпилировано в тот же самый класс, что и у вас выше.
Во-вторых, вы можете легко отсортировать их с помощью лямбда-выражений или LINQ:
var linq = (from CarSpecs c in CarList
orderby c.CreationDate ascending
select c) as List<CarList>;
var lambda = CarList.OrderBy(c => c.CreationDate).ToList();
Не пишите свой собственный алгоритм сортировки. .NET имеет метод Array.Sort ()
специально для таких вещей, как эта.
Поскольку у вас есть настраиваемый объект, вам нужно определить, как сравнивать 2 объекта, чтобы алгоритм сортировки знал, как сортировать их. Вы можете сделать это одним из двух способов:
CarSpecs
реализовать интерфейс IComparable
IComparer
, и передайте его in в качестве параметра Array.Sort ()
вместе с вашим массивом. В BCL уже есть алгоритмы сортировки - Array.Sort () и List.Sort (). Реализуйте класс IComparer, который определяет порядок сортировки с помощью CreationDate, затем поместите все объекты в массив или список и вызовите соответствующий метод Sort ()