代码之家  ›  专栏  ›  技术社区  ›  Dillie-O

如何从数组列表创建逗号分隔的字符串?

  •  72
  • Dillie-O  · 技术社区  · 16 年前

    我在一个处理脚本中存储一个ID数组列表,我想将其作为逗号分隔的列表输出到调试日志。有没有一种方法可以让我很容易地做到这一点,而不需要反复检查?

    编辑:感谢Joel指出了.NET 2.0及更高版本中提供的(t的)列表。如果你有它的话,事情就容易多了。

    6 回复  |  直到 6 年前
        1
  •  134
  •   Dillie-O    14 年前

    是的,我正在回答我自己的问题,但我还没有在这里找到它,我认为这是一件相当巧妙的事情:

    …在VB.NET:

    String.Join(",", CType(TargetArrayList.ToArray(Type.GetType("System.String")), String()))
    

    ……在C

    string.Join(",", (string[])TargetArrayList.ToArray(Type.GetType("System.String")))
    

    唯一的“gotcha”是,如果使用选项strict来确保转换正确进行,那么arraylist必须将这些项存储为字符串。

    编辑:如果您使用的是.NET 2.0或更高版本,只需创建一个List(Of String)类型的对象,就可以获得所需的内容。非常感谢乔尔提出这个!

    String.Join(",", TargetList.ToArray())
    
        2
  •  17
  •   community wiki Konrad Rudolph    16 年前

    目前的解决方案都相当复杂。惯用的解决方案无疑应该是:

    String.Join(",", x.Cast(Of String)().ToArray())
    

    在新的框架版本中不需要花哨的杂技。假设是一个不那么现代的版本,以下是最简单的:

    Console.WriteLine(String.Join(",", CType(x.ToArray(GetType(String)), String())))
    

    MSPMSP的第二个解决方案也是一个不错的方法,但它不起作用,因为它错过了 AddressOf 关键字。也, Convert.ToString 效率相当低(许多不必要的内部评估),而且 Convert 类的设计通常不是很干净。我倾向于避免它,特别是因为它是完全多余的。

        3
  •  16
  •   Siddharth Rout    13 年前

    类似:

    String.Join(",", myArrayList.toArray(string.GetType()) );
    

    基本上是循环的,你知道…

    编辑

    怎么样:

    string.Join(",", Array.ConvertAll<object, string>(a.ToArray(), Convert.ToString));
    
        4
  •  7
  •   bashburak    9 年前

    string.Join(" ,", myArrayList.ToArray()); 这将与.NET Framework 4.5一起使用

        5
  •  1
  •   Jim Lahman    13 年前

    下面是一个简单的示例,演示如何使用字符串列表中的string.join()创建逗号分隔的字符串:

    List<string> histList = new List<string>();
    histList.Add(dt.ToString("MM/dd/yyyy::HH:mm:ss.ffff"));
    histList.Add(Index.ToString());
    /*arValue is array of Singles */
    foreach (Single s in arValue)
    {
         histList.Add(s.ToString());
    }
    String HistLine = String.Join(",", histList.ToArray());
    
        6
  •  1
  •   Echostorm    6 年前
    foo.ToArray().Aggregate((a, b) => (a + "," + b)).ToString()
    

    string.Concat(foo.ToArray().Select(a => a += ",").ToArray())
    

    更新,因为这是非常古老的。当然,您应该使用string.join。在写作的时候,它并不是一种选择。