从字符串数组中读取数据点

时间:2013-04-17 14:29:33

标签: c# string multidimensional-array

我有一个包含这样的数字的文本文件:

84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37
84 152 100 52 95 186 169 106 37
86 149 101 56 93 181 171 116 37

有没有办法读取2个数据点,如(84,152)然后(100,52)?

string[] lines = File.ReadAllLines(@"C:\Users\Farhan Afzal\Downloads\data_1_2.txt");
string[] line = lines.Select(l => String.Join(" ", l.Split(new[] { ' ' }, StringSplitOptions.RemoveEmptyEntries))).ToArray();

2 个答案:

答案 0 :(得分:1)

var lines = File.ReadAllLines(@"C:\items.txt");
var points = new List<Tuple<int, int>>();
var items = lines.SelectMany(ln => ln.Split(new[] {' '}).Select(n => Convert.ToInt32(n)))
                 .ToList();
for (int i = 0; i < items.Count(); i+=2)
{    
    int second = (i + 1) < items.Count() ? items[ i + 1] : Int32.MinValue;                
    points.Add(Tuple.Create(items[i], second));
}

TODO:错误/输入格式处理

使用MoreLINQ Batch()这只是

items.Batch(2)

答案 1 :(得分:0)

借助副作用

int dummy = 0;
var result = list.GroupBy(x => dummy++%2)
                .Select(g => g.ToArray())
                .ToList();

没有副作用的长版本

var result = list.Select((x,i)=>new {item=x,index=i})
                .GroupBy(x => x.index%2)
                .Select(g => g.Select(x=>x.item).ToArray())
                .ToList();