Tôi có một bộ sưu tập các tên đầu tiên mà tôi cần phải kết hợp thành một chuỗi được phân tách bằng dấu phẩy.Cách tạo Chuỗi từ Bộ sưu tập Tên
Chuỗi được tạo cần phải tuân thủ ngữ pháp phù hợp.
Nếu bộ sưu tập chứa một tên, sau đó sản lượng nên được chỉ tên:
John
Nếu bộ sưu tập bao gồm hai tên, sau đó đầu ra nên được tách ra bằng từ "và":
John and Mary
Nếu bộ sưu tập bao gồm ba hoặc nhiều tên, sau đó đầu ra nên được dấu phẩy phân cách, và tên cuối cùng nên có từ "và" trước khi nó:
John, Mary, and Jane
Đây là mã tôi đã đưa ra. Nó không phải là rất thanh lịch và tôi muốn biết nếu có một cách tốt hơn để thực hiện điều này trong C# (4.0 là OK).
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];
}
Bạn có chắc chắn bạn muốn ', and' giữa hai cuối cùng? –
@ Henk, Đó là vấn đề ưu tiên. Cả hai (có và không có dấu phẩy) đều đúng. – Nate
Hướng dẫn kiểu thường thêm dấu phẩy, nhưng chúng cũng (đôi khi) cho biết bạn có thể phân chia bằng dấu phẩy. I E. cả hai "A, B và C" và "A, B, và C" đều được coi là chính xác, nhưng sau này là cái được gợi ý nhiều nhất. Xem http://www.wikihow.com/Use-English-Punctuation-Chính xác cho một ví dụ như vậy, phần 5, dấu đầu dòng thứ hai. –