Разделить строку на массив строк и сохранить разделители - PullRequest
1 голос
/ 21 февраля 2011

У меня есть что-то вроде этого:

  string[] names= {"john","joe", "jim"};
  data="john,4,3,6,joe,3,6,2,jim,3,6,7";
  string[] results=data.Split(names,StringSplitOptions.RemoveEmptyEntries);

это дает:

 ,4,3,6

 ,3,6,2

 ,3,6,7

но я хочу, чтобы имена тоже были в массиве результатов.

Ответы [ 3 ]

6 голосов
/ 21 февраля 2011

Как насчет добавления этой строки в конце:

results = results.Select((x, i) => names[i] + x).ToArray();

Это будет предшествовать имени перед каждой записью, выводя:

Джон, 4,3,6
Джо, 3,6,2
Джим, 3,6,7

3 голосов
/ 21 февраля 2011

Вы можете сохранить свой оригинальный код, а затем вписать имена:

string[] names= new [] {"john","joe", "jim" };
string data="john,4,3,6,joe,3,6,2,jim,3,6,7";
string[] results = data.Split(names, StringSplitOptions.RemoveEmptyEntries)
                       .Zip(names, (values, name) => name + values)
                       .ToArray();
1 голос
/ 21 февраля 2011

Когда я смотрю на образец, наиболее разумным подходом кажется разделение «данных» на «,», а затем перегруппировка частей. Если всегда есть группы по 4 человека, это очень просто.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...