[英]What delimiter can be used for .csv that has “,” in it's column
我想读取.csv 文件并写入 other.csv 文件。 我使用streamwriter
并将string.split
与delimiter (',')
一起使用。
using (StreamWriter file = new StreamWriter(destFile, true))
{
string lines = System.IO.File.ReadAllLines(inputFile);
foreach (string line in lines)
{
if (line != lines[0])
{
string[] values = line.Split(',');
file.WriteLine("{0},{1},{2},{3},{4},{5},{6},{7},{8},{9}",
values[43], values[0], values[11], values[12], values[13], values[15], values[14], values[28], values[22], values[9]);
}}}
但是,
在它的data
中很少有列,如下所示,因此产生incorrect output
因为程序将其计为delimiter
。
我试过使用tinyCSVParser
库,但它也使用分隔符,这会产生相同的结果。 当我更改为CSVHelper
库时,它不使用分隔符,但因为输入文件有名为public double B/S
的列,因此我卡在那里,因为属性不能接受该名称。
[Name("B/S")]
private double p = 0;
public double B/S
{
get
{
return p;
}
set
{
double result;
result = double.Parse(Principal) * value / Day / 100;
p = Math.Abs(result);
}
}
我应该用什么替换delimiter
?
我建议您使用 CSV 库来编写 csv 文件。 但是您可以在定义RFC-4180中查看如何格式化 csv 。
- 每个字段都可以用双引号括起来,也可以不用双引号(但是某些程序,例如 Microsoft Excel,根本不使用双引号)。 如果字段没有用双引号括起来,则双引号可能不会出现在字段内。
如果我很理解你...
尝试这个:
using (StreamWriter file = new StreamWriter(destFile, true))
{
string lines = System.IO.File.ReadAllLines(inputFile);
foreach (string line in lines)
{
string[] delimiter = line==lines[0] ? new string[]{","} : new string[]{"\",\"", "\""};
string[] values = line.Split(delimiter, StringSplitOptions.RemoveEmptyEntries);
//...
}
}
编辑
看看这个: .NET 小提琴
注意:如果要通过引号分割字符串,则需要在字符串中使用反斜杠。 请参阅: 如何:将引号放在字符串中(Windows 窗体)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.