В .txt записана такие строки, к примеру
stroka1
stroka-
stroka2
Вопрос такой: как через код, вывести:
только те строки, которые находятся "над" и "после" строки, которая кончается с -
Вывод должен быть таким:
stroka1
stroka2
Возможно что-то будет типа ...EndsWith("-")-1);
Для начала можно попробовать так:
static void Main(string[] args)
{
string prev = "", current = "", next = "";
foreach (var s in File.ReadLines("TextFile.txt").Concat(new[] { "" }))
{
prev = current;
current = next;
next = s;
if (IsSignal(current))
{
Console.WriteLine(prev);
Console.WriteLine(next);
}
}
Console.ReadLine();
}
static bool IsSignal(string s)
{
return s.EndsWith("-");
}
PS: Если вы используете .NET 4.7.1 или выше, вместо .Concat(new[] { "" }) можно использовать .Append("")
То же самое с использованием morelinq:
static void Main(string[] args)
{
foreach (var list
in File.ReadLines("TextFile.txt")
.Prepend("")
.Concat("")
.Windowed(3)
.Select(w => w.ToList()))
{
if (IsSignal(list[1]))
{
Console.WriteLine(list[0]);
Console.WriteLine(list[2]);
}
}
Console.ReadLine();
}
static bool IsSignal(string s)
{
return s.EndsWith("-");
}
var s = File.ReadLines("input.txt").ToList();
for (int i = 0; i < s.Count; i++)
{
if (s[i].EndsWith("-"))
{
if (i >= 1)
{
Console.WriteLine(s[i - 1]);
}
if(i + 1 < s.Count)
{
Console.WriteLine(s[i + 1]);
}
i++;
}
}
думаю, тут будет проще и понятнее.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости