微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

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

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

生成的字符串需要遵循正确的语法.

如果集合包含一个名称,那么输出应该只是该名称

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

原文地址:https://www.jb51.cc/csharp/93513.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐