Разбить список строк на массивы строк

142
29 августа 2021, 18:00

У меня есть List< string>, он содержит набор строк отделённых пустой строкой, и я хочу его разбить на подмассивы основываясь на этих пустых строках. Пример:

List< string>:

USER:    kitoung95@gmail.com
PASS:    toung778899
HOST: SMTP://123456
USER: kitoung95@gmail.com
PASS: toung778899
HOST:    SMTP://12345
USER:    kitoung95@gmail.com
PASS:    15156
HOST: SMTP://123456l/pwd

Я хочу получить 3 массива/списка:

Массив 1:

USER:    kitoung95@gmail.com
PASS:    toung778899
HOST: SMTP://123456

Массив 2:

USER: kitoung95@gmail.com
PASS: toung778899
HOST:    SMTP://12345

Массив 3:

USER:    kitoung95@gmail.com
PASS:    15156
HOST: SMTP://123456l/pwd

Как это сделать???

Answer 1

В принципе, ничего сложного. Простая функция для разделения без регулярок

private IEnumerable<List<string>> SplitByEmptyString(IEnumerable<string> source){
    var ret = new List<string>();
    foreach(var line in source){
        if (string.IsNullOrEmpty(line)){
            if (ret.Count > 0) yield return ret;
            ret = new List<string>();       
        }
        else ret.Add(line);
    }   
    if (ret.Count > 0) yield return ret;
}

Проверка

string str = 
@"USER:    kitoung95@gmail.com
PASS:    toung778899
HOST: SMTP://123456
USER: kitoung95@gmail.com
PASS: toung778899
HOST:    SMTP://12345
USER:    kitoung95@gmail.com
PASS:    15156
HOST: SMTP://123456l/pwd";
var lines = str.Split(new[] {Environment.NewLine}, StringSplitOptions.None);
foreach(var group in SplitByEmptyString(lines))
    Console.WriteLine(string.Join(", ", group));    

Вывод

USER:    kitoung95@gmail.com, PASS:    toung778899, HOST: SMTP://123456
USER: kitoung95@gmail.com, PASS: toung778899, HOST:    SMTP://12345
USER:    kitoung95@gmail.com, PASS:    15156, HOST: SMTP://123456l/pwd
READ ALSO
&ldquo;TimeSpan?&rdquo; не содержит определения &ldquo;TotalMinutes&rdquo;

“TimeSpan?” не содержит определения “TotalMinutes”

Программа простая, прототип бэк-энда для киоска парковкиНадо посчитать время выезда машины с парковки, но почему-то при попытке подсчитать...

103
C# WPF вытащить компонент из xaml

C# WPF вытащить компонент из xaml

Есть некое окно с разметкой Mainxaml, и есть некий файл с отдельно свёрстанным элементом(пусть будет Button

95
Подсчитать количество записей за 2018 год SQL

Подсчитать количество записей за 2018 год SQL

Всем привет, столкнулся с маленькой проблемойЕсть связанные таблицы, данные из них я получил, но мне нужно посчитать записи за 2018 год

223
Как применить два тега к переменной в PHP?

Как применить два тега к переменной в PHP?

Нужно вывести данные массива (дни недели)Выходные - выделить жирным шрифтом, причем текущий день - выделить курсивом

109