Выделение подстрок по ключевым словам - C#
Формулировка задачи:
Доброго времени суток.
Есть проблема. допустим дан массив тегов:
и есть строка
каким образом можно выделить подстроки для каждого тега?
string[] tags = {"TAG1","TAG2","TAG3","TAG4","TAG5","TAG6","TAG7","TAG8"};string file = "TAG2jjfjfjndbfdjTAG1qqqqqqqTAG3uytygh fhdjdfTAG5hgjdhfghTAG6trgfmxc hdfhdTAG2jfksksdhjskTAG3kdjbjvbsjTAG2jskjdjdvjvbxjkvbjdTAG2jkxcndjcjbkjn";
Решение задачи: «Выделение подстрок по ключевым словам»
textual
Листинг программы
using System;
using System.Linq;
using System.Text.RegularExpressions;
namespace ConsoleApplication102
{
internal class Program
{
private static void Main()
{
string[] tags = {"TAG1", "TAG2", "TAG3", "TAG4", "TAG5", "TAG6", "TAG7", "TAG8"};
string file = "TAG2jjfjfjndbfdjTAG1qqqqqqqTAG3uytygh fhdjdfTAG5hgjdhfghTAG6trgfmxc hdfhdTAG2jfksksdhjskTAG3kdjbjvbsjTAG2jskjdjdvjvbxjkvbjdTAG2jkxcndjcjbkjn";
string tag = "(" + string.Join("|", tags) + ")";
var lookup = Regex.Matches(file, string.Format(@"({0})(.+?)(?={0}|$)", tag))
.Cast<Match>()
.ToLookup(m => m.Groups[1].Value, m => m.Groups[3].Value);
foreach (var pair in lookup)
{
Console.Write(pair.Key + " =\t");
foreach (var entry in pair)
{
Console.Write(entry + " ");
}
Console.WriteLine();
Console.WriteLine();
}
}
}
}