C# 使用double、double验证简单CSV文件

C# 使用double、double验证简单CSV文件,c#,.net,validation,csv,C#,.net,Validation,Csv,在我的程序中,我想导入csv文件,这些文件中应该只有一对双精度文件。比如: 2.2131321321, 32.321321321 3.31321321321, 65.65454545 4.12321351351, 16.13211212 你能帮我找到一种安全快速的方法吗?最简单的方法是逐行读取文件,按,拆分每一行,然后尝试使用double.TryParse来解析每个部分 简单示例,假设文件有效(无需检查): 公共静态IEnumerable ReadCSV(字符串文件路径) { 使用(var r

在我的程序中,我想导入csv文件,这些文件中应该只有一对双精度文件。比如:

2.2131321321, 32.321321321
3.31321321321, 65.65454545
4.12321351351, 16.13211212

你能帮我找到一种安全快速的方法吗?

最简单的方法是逐行读取文件,按
拆分每一行,然后尝试使用
double.TryParse来解析每个部分

简单示例,假设文件有效(无需检查):

公共静态IEnumerable ReadCSV(字符串文件路径)
{
使用(var reader=newstreamreader(filePath))
{
弦线;
而((line=reader.ReadLine())!=null)
{
var split=line.split(新[]{',},
StringSplitOptions.RemoveEmptyEntries);
产生返回新元组(
double.Parse(拆分[0],CultureInfo.InvariantCulture),
Parse(split[1],CultureInfo.InvariantCulture));
}
}
}

最简单的方法是逐行读取文件,将每行拆分为
,然后尝试使用
double.TryParse来解析每个部分

简单示例,假设文件有效(无需检查):

公共静态IEnumerable ReadCSV(字符串文件路径)
{
使用(var reader=newstreamreader(filePath))
{
弦线;
而((line=reader.ReadLine())!=null)
{
var split=line.split(新[]{',},
StringSplitOptions.RemoveEmptyEntries);
产生返回新元组(
double.Parse(拆分[0],CultureInfo.InvariantCulture),
Parse(split[1],CultureInfo.InvariantCulture));
}
}
}

我们没有在堆栈溢出时“查找”代码。我们帮助您识别代码中的问题。你的问题是什么?告诉我们你用代码做了什么?我们不会为您完成工作,但会帮助您解决任何困难。我们不会在堆栈溢出时“查找”代码。我们帮助您识别代码中的问题。你的问题是什么?告诉我们你用代码做了什么?我们不会为您完成工作,但会帮助您解决任何困难。在执行此操作时请小心,因为小数分隔符将取决于文化。确保通过“不变量文化”。@GeirGrusom+1我以前被文化问题困扰过。事后处理不是件有趣的事。谢谢,这很好用。但是如果一个系统有
作为十进制分隔符,那么一行将类似于
32356566654654
@Sean87,那么您应该使用
CultureInfo.CurrentCulture
进行此操作时要小心,因为十进制分隔符将取决于区域性。确保通过“不变量文化”。@GeirGrusom+1我以前被文化问题困扰过。事后处理不是件有趣的事。谢谢,这很好用。但是如果一个系统有
作为十进制分隔符,那么一行像
32356566654654
@Sean87,那么应该使用
CultureInfo.CurrentCulture
public static IEnumerable<Tuple<double, double>> ReadCSV(string filePath)
{
    using (var reader = new StreamReader(filePath))
    {
        string line;
        while ((line = reader.ReadLine()) != null)
        {
            var split = line.Split(new[] { ',' },
                StringSplitOptions.RemoveEmptyEntries);

            yield return new Tuple<double, double>(
                double.Parse(split[0], CultureInfo.InvariantCulture),
                double.Parse(split[1], CultureInfo.InvariantCulture));
        }
    }
}