У меня есть коллекция имен, которые нужно объединить в строку, разделенную запятыми.
Сгенерированная строка должна соответствовать правильной грамматике.
Если коллекция содержит одно имятогда на выходе должно быть только это имя:
John
Если коллекция содержит два имени, то выходные данные должны быть разделены словом "и":
John and Mary
Если коллекциясодержит три или более имен, тогда выходные данные должны быть разделены запятыми, а перед именем должно стоять слово «и»:
John, Mary, and Jane
Вот код, который я придумал.Это не очень элегантно, и я хотел бы знать, есть ли лучший способ сделать это в C # (4.0 в порядке).
List<string> firstNames = new List<string>();
firstNames.Add("John");
firstNames.Add("Mary");
firstNames.Add("Jane");
string names = string.Empty;
for (int i = 0; i < firstNames.Count; i++)
{
if (i == 1 && firstNames.Count == 2)
{
names += " and ";
}
else if (firstNames.Count > 2 && i > 0 && i != firstNames.Count - 1)
{
names += ", ";
}
else if (i != 0 && i == firstNames.Count - 1)
{
names += ", and ";
}
names += firstNames[i];
}