C#中无需循环的方法将字符串拆分为多维数组或锯齿数组

4

如何将一个字符串分割成多维数组或交错数组而不使用循环? 我看到有人用文件流这样做的代码片段,但我不知道如何使其适用于我的字符串。 我的字符串类似于1:2;3:1;4:1,可以被分割成ID:Qty。 这是我看到的代码:

string[][] lines = File.ReadAllLines(path)
    .Select(line => line.Split(',').ToArray()).ToArray();   

提前致谢。

2个回答

8
String s = "1:2;1:3;1:4";
String[][] f = s.Split( ';' ).Select( t => t.Split( ':' ) ).ToArray();

3
MyString.Split(';').Select(s => s.Split(':'))

这将为您提供一个 IEnumerable<IEnumerable<string>>。如果您确实想要,可以调用.ToArray(),但很少值得这样做。


你的回答很好。它让我离完成只有一步之遥 - 我该如何从 <IEnumerable<IEnumerable<string>> 转换为 String[][]? - Praesagus
2
你真的需要一个 string[][] 吗?IEnumerable 可以满足你 90% 的需求,而在需要之前转换为真正的数组对性能非常不利。如果你确实需要,唯一需要做出的改变就是在正确的位置调用 .ToArray()。你还可以考虑是否可以使用 IEnumerable 数组或数组的 IEnumerable。 - Joel Coehoorn

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接