【问题标题】:Convert a long string to List<string[]> in C# [duplicate]在 C# 中将长字符串转换为 List<string[]> [重复]
【发布时间】:2014-01-19 18:58:15
【问题描述】:

字符串如下所示:

"c,c,c,c,c,c\r\nc,c,c,c,c,c\r\n.....c,c,c,c,c\r\n"

这条线有效:

IEnumerable<string[]> lineFields = File.ReadAllLines(sFile).Select(line => line.Split(','));
List<string[]> lLines = lineFields.ToList();

但是假设我不是从文件中读取,而是我之前描述的字符串。

什么是最快的(我指的是性能)将它转换为一个List的字符串[]看起来像

List<string[]> lLines = [ [c,c,c,c,c] , [c,c,c,c,c] , ... [c,c,c,c,c] ]

谢谢。

【问题讨论】:

  • 我想你已经在 split 中使用 fastet 方式了。
  • 寻求最快的方法可能不会得到您期望的结果,因为性能将取决于字符串的长度等。您准备好在收到的所有答案中对代码进行基准测试了吗?
  • 使用一些基准。使用System.Diagnostics.StopWatch 进行测量。

标签: c# string


【解决方案1】:

试试这个

string combindedString = string.Join( ",", myList );

【讨论】:

  • 我认为OP想创建List&lt;string[]&gt;
  • @Yanshof,谢尔盖是对的。我想创建 List
【解决方案2】:

这样的事情应该可以工作:

var list = "c,c,c,c,c,c\r\nc,c,c,c,c,c\r\n.....c,c,c,c,c\r\n"
    .Split('\n')
    .Select(s => s.Trim().Split(','));

【讨论】:

  • 这也很好用。如果我们要表演,你们有什么建议? (我的数据集太小,无法比较它 ATM)菲利普的答案还是这个?谢谢。
  • @Mockingbird - 见上面的评论
【解决方案3】:

试试这样的:

// replace \r\n to ; and split it... it will be your lines
var lines = text.replace("\r\n", ";").Split(';');

// split every item of the line arrays by , and get an new array to each item
List<string[]> arrays = lines.Select(x => x.Split(',')).ToList();

【讨论】:

  • 就像一个魅力!谢谢!顺便说一句,是否有跳过替换行以提高性能?
  • 在大型数据集上进行这样的替换会慢得多 - 因为您必须在内存中创建和分配初始字符串的整个字符串 - 尽管使用替换的字符。所以 - 如果一个 100meg 的初始字符串 - 这将需要至少 200meg 来处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2018-08-27
  • 1970-01-01
  • 1970-01-01
  • 2021-04-21
相关资源
最近更新 更多