var s = "first, middle, middle, middle, middle, last";
var singleItems = s.Split(',').Select(x => x.Trim());
var splits = new []
{
singleItems.Take(1).Single(),
singleItems.Skip(1).Take(singleItems.Count() - 2)
.Aggregate("", (s1, s2) => s1 + s2 + ", ")
.Trim(' ', ','),
singleItems.Skip(singleItems.Count() - 1).Single()
};
Альтернативный способ сделать это будет следующим:
var firstIndex = s.IndexOf(',');
var lastIndex = s.LastIndexOf(',');
var splits = new []
{
s.Substring(0, firstIndex),
s.Substring(firstIndex + 2, lastIndex - (firstIndex + 2)),
s.Substring(lastIndex + 2)
};
Я думаю, что второе решение чище и проще для понимания.Но у него есть тот недостаток, что за первой и последней запятой должен следовать пробел.Это требование не существует для первой версии.