Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 分析数据c_C# - Fatal编程技术网

C# 分析数据c

C# 分析数据c,c#,C#,我正在上c课,我们的资源很差 我已经使用StreamReader输入了一个csv文件,我想做的是分析特定特征的信息。让我困惑的是,我如何让我的程序知道从每行中选择数据的某些部分?假设我想选择最大的数字 例如,如果一行是: 2003-04-12334367289 我是否可以在此添加一个声明 input = reader.ReadLine(); while (input != null) { ... input = reader.ReadLine(); //next row }

我正在上c课,我们的资源很差

我已经使用StreamReader输入了一个csv文件,我想做的是分析特定特征的信息。让我困惑的是,我如何让我的程序知道从每行中选择数据的某些部分?假设我想选择最大的数字

例如,如果一行是:

2003-04-12334367289

我是否可以在此添加一个声明

input = reader.ReadLine(); 
while (input != null) 
{
    ...
    input = reader.ReadLine(); //next row
}
reader.Close();
提前谢谢。

可能就是您要找的

大概是这样的:

var lineRegex = new Regex(@"(?<year>[0-9]+)\-(?<month>[0-9]+)\-(?<day>[0-9]+), (?<first>[0-9]+), (?<second>[0-9]+), (?<third>[0-9]+)");
// ...
var matches = lineRegex.Matches(input);

您的结果现在位于matches元素的集合中。不过,这只是一个示例,创建正确的正则表达式字符串本身就是一项任务。

最简单的方法是将行拆分为若干部分,然后使用.TryParse将这些部分安全地解析为数字


在读取文件时,是否要对文件中的每一行进行比较(速度很慢),或者,是否可以转储整个文件,然后对其进行解析,以查找上面示例中给出的模式?数据总是按照你给我们的模式吗?嘿,布莱恩,我想对每一行进行比较,每一行都有相同的数据格式和不同的数字。第一个是日期如果它特别遵循这个模式,我会使用a来完成这个任务。顺便说一句,如果你想要更好的速度,那么试试System.IO.File.ReadAllLines方法。
static void Main(string[] args)
{
    var reader=System.IO.File.OpenText("Data.csv");
    List<double[]> data=new List<double[]>();
    var line=reader.ReadLine();
    double max=0;
    while(!reader.EndOfStream)
    {
        line=reader.ReadLine();
        string[] parts=line.Split(',');
        //parse first part as date
        DateTime date=DateTime.Parse(parts[0]);
        //parse rest of parts as float/doulbe/decimal
        double[] values=new double[parts.Length-1];
        for(int i=0; i<values.Length; i++)
        {
            //for each value in row convert string to number safely.
            double x = 0;
            double.TryParse(parts[i+1], out x);
            values[i]=x;
        }
        //keep data values in list
        data.Add(values);
        //keep highest from 1st column
        if(values[0]>max) { max=values[0]; }
    }
    reader.Close();
}