Преобразовать строку чисел в массив чисел c #? - PullRequest
2 голосов
/ 29 декабря 2010

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

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

Ответы [ 3 ]

4 голосов
/ 29 декабря 2010

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

var nums = s.Split(' ').Select(n=>Int32.Parse(n)).ToList();
var grid = nums.Split(nums.Count / 3);
1 голос
/ 29 декабря 2010

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

1 голос
/ 29 декабря 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, вероятно, хуже, чем обычное решение;однако эта идея может быть полезна для подобных проблем.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...