взять последние 10 совпадений

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43
Есть кусок кода, который парсит исходный текст и все совпадения записывает в новую переменную, после каждого совпадения добавляется конец строки. Нужно его как-то преобразовать, чтобы брались только последние 10 совпадений. При этом реально там может быть даже меньше 10 совпадений, но код все равно должен нормально работать и записывать все найденные совпадения.

Код:
string result = String.Empty;

   var millenium = "(?<=\\#).*?(?=\\#)";
          
            var buff = Regex.Matches("текст", millenium);
            foreach (Match item in buff)
            {
                var x = item.Value;
                result += string.Concat(x +"\n");
            }
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
в лоб
Код:
string result = String.Empty;

   var millenium = "(?<=\\#).*?(?=\\#)";
        
            var buff = Regex.Matches("текст", millenium);
            var index = buff.Count - 10;
            index = index < 0 ? 0 : index;
            for(var i = index; i < buff.Count; i++)
            {
                var x = buff[i].Value;
                result += string.Concat(x +"\n");
            }
 
  • Спасибо
Реакции: maxxZEN

maxxZEN

Client
Регистрация
18.03.2012
Сообщения
596
Благодарностей
113
Баллы
43
Спасибище!:bf:
 

AShaggy

Активный пользователь
Регистрация
25.11.2014
Сообщения
335
Благодарностей
143
Баллы
43
может вообще вот так :-)
Код:
var millenium = "(?<=\\#).*?(?=\\#)";
var buff = Regex.Matches("текст", millenium);
var result = string.Join("\n", (from Match item in buff select item.Value).Reverse().Take(10).Reverse());
 
  • Спасибо
Реакции: maxxZEN

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)