Задать вопрос
@pavviaz

Как можно преобразовать MatchCollection в массив строк в c#?

Здравствуйте, пишу программу для автоматического решения уравнений на Visual C#. После ввода уравнения и некоторых преобразований получаем, например, это :
string Equation= "+5x-25x+151-x+x+325x-1+";
Далее здесь необходимо привести подобные слагаемые. Для этого захотел использовать регулярные выражения. Например, для выделения "-x" или "+x" использую следующее :
string Xplusandmines = @"[+--][x]";
Так как в уравнении может быть не один такой член, то использую метод Regex.Matches.
В итоге, для получения переменной типа MathCollection написал это :
MatchCollection matches = Regex.Matches(Equation, Xplusandmines);

Теперь необходимо как-то преобразовать matches в массив строк или нечто подобное, где найденные совпадения будет удобно обрабатывать. Никак не могу придумать, как преобразовать MatchCollection в string[] (или во что-то другое). Помогите, пожалуйста. Спасибо :)
  • Вопрос задан
  • 1233 просмотра
Подписаться 1 Простой 1 комментарий
Помогут разобраться в теме Все курсы
  • OTUS
    C# Developer. Professional
    6 месяцев
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 1
    1 неделя
    Далее
  • Ulearn.me
    Основы программирования на примере C#. Часть 2
    1 неделя
    Далее
Решения вопроса 1
AlekseyNemiro
@AlekseyNemiro
full-stack developer
Либо циклом пройтись и собрать массив/коллекцию:
var result = new List<string>();

foreach (Match m in matches)
{
  result.Add(m.Value);
}

// в result будет коллекция строк

Либо можно использовать System.Linq:

using System.Linq;
var stringArray = matches.Cast<Match>().Select(m => m.Value).ToArray();

Как-то показывал пример решателя, но на VB.NET. При желании, можно на C# сделать аналогично.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы