如何使用LINQ使用不同的分隔符将字符串拆分两次?

时间:2013-02-10 21:16:10

标签: c# linq split

我有像"1\t2\r\n3\t4"这样的字符串,我想将它们拆分为:

new string[][] { { 1, 2 }, { 3, 4 } }

基本上,它应该分成几行,每行应分成标签。我尝试使用以下内容,但它不起作用:

string toParse = "1\t2\r\n3\t4";

string[][] parsed = toParse
    .Split(new string[] {@"\r\n"}, StringSplitOptions.None)
    .Select(s => s.Split('\t'))
    .ToArray();
  1. 我的方法出了什么问题?为什么我没有得到理想的结果?
  2. 如何使用LINQ解决此问题?

2 个答案:

答案 0 :(得分:7)

删除'@':

string toParse = "1\t2\r\n3\t4";

string[][] parsed = toParse
    .Split(new string[] {"\r\n"}, StringSplitOptions.None)
    .Select(s => s.Split('\t'))
    .ToArray();

@使字符串包含反斜杠,而不是它们代表的字符。

答案 1 :(得分:3)

string str = "1\t2\r\n3\t4";
Int32[][] result = str.Split(new[] { Environment.NewLine }, StringSplitOptions.None)
    .Select(s => s.Split('\t').Select(s2 => int.Parse(s2)).ToArray())
    .ToArray();

Demo