0

我正在尝试解析强力球彩票文本文件,将 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的explode函数这样的东西会很好。

4

3 回答 3

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))
              };
于 2013-04-05T16:46:58.370 回答
0

我认为您需要拆分功能

"text and stuffz".Split('\n');
于 2013-04-05T16:42:12.823 回答
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...
    };
于 2013-04-05T16:48:53.673 回答