将数字字符串转换为数字数组c#?

时间:2010-12-29 11:33:46

标签: c# arrays int

我有一个由9个以空格分隔的整数字符串,如"3 4 6 9 8 8 2 3 4",我想将其转换为3x3 int数组。

一个简单的解决方案是在新矩阵上执行两个循环并转换字符串值 当我走的时候。有更优雅的方式吗?

3 个答案:

答案 0 :(得分:4)

使用Split a collection into `n` parts with LINQ?

中的拆分扩展程序
var nums = s.Split(' ').Select(n=>Int32.Parse(n)).ToList();
var grid = nums.Split(nums.Count / 3);

答案 1 :(得分:1)

基本上,您的解决方案尽可能好。你可以用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解决方案可能比正常解决方案更糟糕;但是,这个想法可能对类似问题有所帮助。

答案 2 :(得分:1)

您可以对“”字符string.split()进行拆分,然后您将获得一个包含数字的字符串数组。然后你必须将它们转换为整数并将一个普通数组分发给你想要的数组,据我所知,没有办法以另一种方式迭代数组,但你只需要一个循环。