0

我正在处理这个问题并遇到了一个新问题,因为我需要合并一个锯齿状数组,所以我尝试像这样修改这段代码..

string y = "{10} red30, {20} blue12, {30} green90, {40} yellow13 : {15} axe,  
     {25} frog, {33} sandwich, {55} spinach : ...." and so on. 

int[][] Odds = y.Split(':').Select(t => Regex.Matches(t, @"(?<={)\d+(?=})"))  
    .Cast<Match>() .Select(m => int.Parse(m.Value)) .ToArray();

使用一个新字符串,其中每个新数组之间有一个“:”作为分隔符。它给了我“无法将类型'int []'隐式转换为'int [] []'的错误

4

1 回答 1

2

那是因为该Matches方法不返回一个Match对象,它返回一个MatchCollection对象。您必须从每个集合中获取Match对象并解析值,然后您可以将它们转换为数组:

int[][] Odds =
  y.Split(':')
  .Select(t => Regex.Matches(t, @"(?<={)\d+(?=})"))
  .Cast<MatchCollection>()
  .Select(
    m => m.Cast<Match>()
     .Select(n => int.Parse(n.Value))
     .ToArray()
  )
  .ToArray();
于 2013-01-13T06:06:53.253 回答