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

如何从ArrayList创建逗号分隔的字符串?

如何解决《如何从ArrayList创建逗号分隔的字符串?》经验,为你挑选了4个好方法。

我将Ids的ArrayList存储在一个处理脚本中,我希望将其作为逗号分隔列表吐出,以输出到调试日志.有没有办法在没有循环的情况下轻松搞定?

编辑:感谢Joel指出.net 2.0及以上版本中可用的List(Of T).如果你有它可以使TONS更容易.



1> Dillie-O..:

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

...在VB.NET中:

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

......在C#中

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

这些唯一的"问题"是,如果您使用Option Strict确保转换正确进行,则ArrayList必须将项目存储为字符串.

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

String.Join(",", TargetList.ToArray())


还有其他"陷阱".一个是这个解决方案不像自己循环遍历列表那样惯用.其次,如果ToArray遍历集合,而Join也是如此,这需要两倍于简单的foreach循环.

2> Konrad Rudol..:

到目前为止,解决方案都非常复杂.惯用的解决方案无疑应该是:

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

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

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

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



3> 小智..:

就像是:

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

哪个基本上循环你知道...

编辑

怎么样:

string.Join(",", Array.ConvertAll(a.ToArray(), Convert.ToString));



4> 小智..:

string.Join(" ,", myArrayList.ToArray()); 这将适用于.net framework 4.5

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