【发布时间】:2013-02-28 11:53:43
【问题描述】:
我有以下字符串
String s = "1:2,a;1:3,b;1:4";
我可以按照here 中的示例将字符串划分为两级锯齿状数组,但我无法将其扩展到另一级以拥有更多基于, 的拆分器以在@ 中获得输出987654324@
String[][] f = s.Split( ';' ).Select( t => t.Split( ':' ) ).ToArray();
【问题讨论】:
我有以下字符串
String s = "1:2,a;1:3,b;1:4";
我可以按照here 中的示例将字符串划分为两级锯齿状数组,但我无法将其扩展到另一级以拥有更多基于, 的拆分器以在@ 中获得输出987654324@
String[][] f = s.Split( ';' ).Select( t => t.Split( ':' ) ).ToArray();
【问题讨论】:
巢,我的美人!
String[][][] fff =
s.Split(';').Select(
t => t.Split(':').Select(
u => u.Split(',')
).ToArray()
).ToArray();
String[][][][] ffff =
s.Split(';').Select(
t => t.Split(':').Select(
u => u.Split(',').Select(
v => v.Split('.')
).ToArray()
).ToArray()
).ToArray();
String[][][][][] fffff =
s.Split(';').Select(
t => t.Split(':').Select(
u => u.Split(',').Select(
v => v.Split('.').Select(
w => w.Split('/')
).ToArray()
).ToArray()
).ToArray()
).ToArray();
如你所见,你想要分割的东西越多,情况就会变得越糟。没有办法让这个递归仍然得到强类型数组,但这里有一个函数可以给你Arrays - 你只需要递归检查每个元素是string还是另一个Array:
static Array Split(string source, int start, params char[] args)
{
var split = source.Split(args[start]);
if (args.Length == start + 1)
return split;
return split.Select(s => Split(s, start + 1, args)).ToArray();
}
...
String s = "1:2,a;1:3,b;1:4";
Array array = Split(s, 0, ';', ':', ',');
【讨论】:
试试这个:
String s = "1:2,a;1:3,b;1:4";
String[][][] f = s.Split(';').Select(t => t.Split(':').Select( e => e.Split(',') ).ToArray()).ToArray();
【讨论】:
怎么样:
s.Split( ';' ).Select(
t => t.Split( ':' ).Select(
u => u.Split( ',' )
).ToArray()
).ToArray();
【讨论】: