Преобразовать строку чисел в массив чисел С#?

У меня есть строка из 9 целых чисел, разделенных пробелами, например "3 4 6 9 8 8 2 3 4", которую я хочу преобразовать в массив 3x3 int.

Простое решение состоит в том, чтобы выполнить два цикла над новой матрицей и преобразовать строковые значения по ходу дела. Есть ли более элегантный способ сделать это?


person aristotaly    schedule 29.12.2010    source источник
comment
Возможно, вы захотите указать, где вы хотите прямоугольный массив [,] или зубчатый [][].   -  person Dmitri Nesteruk    schedule 29.12.2010
comment
я хочу, чтобы массив был прямоугольным, спасибо Дмитрий   -  person aristotaly    schedule 29.12.2010


Ответы (3)


Использование моего расширения Split из Разделить коллекцию на `n` части с LINQ?

var nums = s.Split(' ').Select(n=>Int32.Parse(n)).ToList();
var grid = nums.Split(nums.Count / 3);
person Muhammad Hasan Khan    schedule 29.12.2010

В принципе, ваше решение настолько хорошо, насколько это возможно. Вы можете сделать то же самое с LINQ:

int[][] result = 
    s.Split(' ')
     .Select((a, index) => new {index, value = int.Parse(a)})
     .GroupBy(tuple => tuple.index / 3)
     .Select(g => g.Select(tuple => tuple.value).ToArray())
     .ToArray();

Для этой проблемы решение LINQ, вероятно, хуже, чем обычное решение; однако идея может быть полезной для подобных проблем.

person mmx    schedule 29.12.2010

Вы можете выполнить разделение по символу " " string.split(), и вы получите массив строк с числами. Затем вы должны привести их к целым числам и распределить простой массив по желаемому массиву, и, насколько я знаю, нет другого способа сделать это, кроме итерации по массиву, но вам понадобится только 1 цикл.

person Ignacio Soler Garcia    schedule 29.12.2010