C# 使用double、double验证简单CSV文件
在我的程序中,我想导入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
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));
}
}
}