当前位置:  开发笔记 > 编程语言 > 正文

将字符串数组连接到"string1,string2或string3"

如何解决《将字符串数组连接到"string1,string2或string3"》经验,为你挑选了3个好方法。

请考虑以下代码:

string[] s = new[] { "Rob", "Jane", "Freddy" };

string joined = string.Join(", ", s);

// joined equals "Rob, Jane, Freddy"

出于UI原因,我可能希望显示字符串"Rob, Jane or Freddy".

有关最简洁的方法的任何建议吗?

编辑

我正在寻找一些简洁的东西.由于我只连接少量(<10)字符串,所以我不担心这里的运行时性能.



1> Marc Gravell..:

简明扼要的意思?还是跑?最快的运行将是手摇StringBuilder.但要键入,可能(编辑句柄0/1等):

string joined;
switch (s.Length) {
    case 0: joined = ""; break;
    case 1: joined = s[0]; break;
    default:
        joined = string.Join(", ", s, 0, s.Length - 1)
               + " or " + s[s.Length - 1];
        break;
} 

StringBuilder方法可能类似于:

static string JoinOr(string[] values) {
    switch (values.Length) {
        case 0: return "";
        case 1: return values[0];
    }
    StringBuilder sb = new StringBuilder();
    for (int i = 0; i < values.Length - 2; i++) {
        sb.Append(values[i]).Append(", ");
    }
    return sb.Append(values[values.Length-2]).Append(" or ")
        .Append(values[values.Length-1]).ToString();
}



2> Rob Kennedy..:

连接除最后一个之外的所有内容.手动完成最后一个.



3> Fabian Viler..:

在string []上创建一个扩展方法,它实现与string.Join相同的逻辑,但最后一项将附加"或".

string[] s = new[] { "Rob", "Jane", "Freddy" };

Console.WriteLine(s.BetterJoin(", ", " or "));

// --- 8 <----

namespace ExtensionMethods
{
    public static class MyExtensions
    {
        public static string BetterJoin(this string[] items, string separator, string lastSeparator)
        {
            StringBuilder sb = new StringBuilder();

            int length = items.Length - 2;
            int i = 0;

            while (i < length)
            {
                sb.AppendFormat("{0}{1}", items[i++], separator);
            }

            sb.AppendFormat("{0}{1}", items[i++], lastSeparator);
            sb.AppendFormat("{0}", items[i]);

            return sb.ToString();
        }
    }
}

推荐阅读
罗文彬2502852027
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有