我正在尝试解析Powerball lottery text file,将6列中的每一列添加到他们自己的数组中,然后稍微玩一下。
以下是数据示例:
Draw Date WB1 WB2 WB3 WB4 WB5 PB PP
04/03/2013 35 08 12 01 06 03
03/30/2013 23 46 11 26 55 27
03/27/2013 43 48 07 37 52 16
03/23/2013 29 53 52 17 31 31
03/20/2013 43 17 14 13 54 15
03/16/2013 44 53 07 21 03 16
...
这就是我的想法:
int[] column1 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] column2 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] column3 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] column4 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] column5 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int[] column6 = new int[] {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
只需要一点解析功能。像PHP的爆炸功能会很好。
答案 0 :(得分:3)
基本操作模式:拆分为行,按分隔符拆分,处理数据。一个简单的解析函数可能是:
var cli = new WebClient();
var raw = cli.DownloadString("http://www.powerball.com/powerball/winnums-text.txt");
var lines = raw.Split('\n');
var records = from line in lines.Skip(1)
let parts = line.Split(new char[] {' '}, StringSplitOptions.RemoveEmptyEntries)
select new {
Date = DateTime.Parse(parts[0], CultureInfo.InvariantCulture),
Numbers = parts.Skip(1).Take(6).Select(x => int.Parse(x))
};
答案 1 :(得分:0)
我认为您需要拆分功能
"text and stuffz".Split('\n');
答案 2 :(得分:0)
如果您喜欢固定宽度方法而不是拆分(但拆分更容易),您可以使用子字符串函数:
DateTime date = DateTime.ParseExact(line.Substring(0, 10), "MM\\/dd\\/yyyy");
string[] nums = new string[6];
nums[0] = line.Substring(12, 2).Trim();
nums[1] = line.Substring(16, 2).Trim();
etc...
或
string[] nums = new[]
{
line.Substring(12, 2).Trim(),
line.Substring(16, 2).Trim(),
etc...
};