Я не понимаю, почему следующий запрос не соответствует результатам:
В настоящее время я работаю с использованием Spanish Culture Info и используя следующую строку:
string input = "newsletter/2015/new-web/newsletter-detalle-marzo/segment-1-3";
Я не могу получить "newsletter-detalle-marzo", используя следующий запрос linq:
public static string[] GetSegmentMatchingMonth(this string input, string breakPattern = "-") {
var query = (from p in input.ToLower().Split('/')
where p.Contains(breakPattern) &&
DateTimeFormatInfo.CurrentInfo.MonthNames.
Select(m=>m.ToLower()).Any(m => p.Contains(m.ToLower()))
select p).ToArray();
return query;
}
PD: В моей текущей культуре MonthNames: (объединение строк в Array)
enero febrero marzo abril mayo junio julio agosto septiembre octubre noviembre diciembre
Результат получает больше результатов без названия месяца:
Я думаю, вам нужно изменить
DateTimeFormatInfo.CurrentInfo.MonthNames
.Select(m => m.ToLower()).ToArray().Contains(p)
в
DateTimeFormatInfo.CurrentInfo.MonthNames.Any(m => p.EndsWith(m.ToLower()))
Если месяц всегда будет в конце той части строки. Или вы можете использовать Contains
если он может быть где угодно в этой части.
РЕДАКТИРОВАТЬ
Оказывается, что DateTimeFormatInfo.CurrentInfo.MonthNames
содержит одну пустую строку. Поэтому вам нужно отфильтровать это.
DateTimeFormatInfo.CurrentInfo.MonthNames
.Where(m=> m.Length > 0)
.Select(m=>m.ToLower())
.Any(m => p.Contains(m))
DateTimeFormatInfo.CurrentInfo.MonthNames
...)