Я бы сказал, да!это можно сделать с помощью регулярных выражений.Убедитесь, что у вас включена опция «многострочный», и создайте свое регулярное выражение, используя несколько групп захвата, чтобы упростить работу.
Однако я могу сказать, что это НЕ будет оптимальным вариантом.Так как вы упомянули количество строк, которые вы могли бы обработать, кажется разумным использование ресурсов с использованием потокового подхода вместо подхода в памяти.
Использование подхода Regex (и это заняло 15 минут, поэтому, пожалуйстане думаю, что это оптимальное решение, просто докажите, что оно будет работать)
private static Regex matcher = new Regex(@"^\$NETS\r\n(?<entrytitle>.[^;]*);\s*(?<entryrest>.*)\r\n(?<entrytitle2>.[^;]*);\s*(?<entryrest2>.*)\r\n\$END\r\n", RegexOptions.Compiled | RegexOptions.Multiline);
static void Main(string[] args)
{
string newString = matcher.Replace(ExampleFileContent, new MatchEvaluator(evaluator));
}
static string evaluator(Match m)
{
return String.Format("$NETS\r\n'{0}'; {1}\r\n'{2}'; {3}\r\n$END\r\n",
m.Groups["entrytitle"].Value,
m.Groups["entryrest"].Value,
m.Groups["entrytitle2"].Value,
m.Groups["entryrest2"].Value);
}
Надеюсь, это поможет,