gpt4 book ai didi

c# - 如何从名称集合构建字符串

转载 作者:太空狗 更新时间:2023-10-29 21:06:32 25 4
gpt4 key购买 nike

我有一个名字集合,我需要将它们组合成逗号分隔的字符串。

生成的字符串需要遵守正确的语法。

如果集合包含一个名字,那么输出应该就是那个名字:

John

如果集合包含两个名字,那么输出应该用单词“and”分隔:

John and Mary

如果集合包含三个或更多姓名,则输出应以逗号分隔,姓氏应在其前面加上单词“and”:

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];
}

最佳答案

我认为它不会比以下更优雅:

 if (names.Count == 0)
return "";

if (names.Count == 1)
return names[0];

if (names.Count == 2)
return names[0] + " and " + names[1];

return String.Join(", ", names.Take(names.Count - 1)) +
", and " + names[names.Count - 1];

我还没有编译这个,但我想你明白了。

编辑:更短,但可读性较差:

 if (names.Count <= 2)
return String.Join(" and ", names);

return String.Join(", ", names.Take(names.Count - 1)) +
", and " + names[names.Count - 1];

关于c# - 如何从名称集合构建字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6445862/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com