FileHelpers:读取文件时如何处理带引号的字段
本文关键字:处理 字段 读取 文件 何处理 FileHelpers | 更新日期: 2023-09-27 18:08:43
下面是我要读取的数据:
"Adam C. Emality","1Z620Y1V034826","14.40"
"Ethel Baeron","1Z620Y1V034604","15.19"
"Donna Lidt","1Z620Y1V034650","12.37"
然后在读取数据后,我想对两个集合执行Join,一个是数组,一个是列表-下面是我的代码。然而,在执行读取文件行之后,我的字符串被存储为这样的"'"Adam C. Emality'""
"'"1Z620Y1V034826'""
"'"14.40'""
…为什么会发生这种情况?我不想包括"
,我不知道为什么要添加'
。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using FileHelpers;
using Parser;
namespace Amazon_File
{
class SpreadSheet
{
public void create(IEnumerable<SpreadList> list)
{
var steamengine = new FileHelperEngine<Records>();
var records = steamengine.ReadFile(@"C:'Users'Danny'Documents'Visual Studio 2013'Projects'Amazon File'Amazon File'Daniel.csv");
var spreadlist = from x in list
join y in records on x.Name equals y.Name
select new { y.Name, y.Track, y.worldPrice, x.ItemPrice, x.Quantity };
[DelimitedRecord(",")]
public class Records
{
public string Name;
public string Track;
public string worldPrice;
}
public class SpreadList
{
public string Name { get; set; }
public string Title { get; set; }
public string ItemPrice { get; set; }
public string Quantity { get; set; }
}
}
您必须添加[fieldquotes]以使库自动删除它们http://www.filehelpers.net/docs/html/T_FileHelpers_FieldQuotedAttribute.htm
[DelimitedRecord(",")]
public class Records
{
[FieldQuoted]
public string Name;
[FieldQuoted]
public string Track;
[FieldQuoted]
public string worldPrice;
}
CSV解析器现在是。net框架的一部分。
添加Microsoft.VisualBasic.dll
的引用(在c#中工作良好,不介意名字)
using (TextFieldParser parser = new TextFieldParser(@"c:'temp'test.csv"))
{
parser.TextFieldType = FieldType.Delimited;
parser.SetDelimiters(",");
while (!parser.EndOfData)
{
//Process row
string[] fields = parser.ReadFields();
foreach (string field in fields)
{
//TODO: Process field
}
}
parser.Close();
}
文档在这里
发生这种情况是因为您将文件作为一个平面字符串读取。该文件包含引号,因此它们也被读入。这是标准的CSV格式
斜杠在c#中用作转义字符。所以"is really just"。您需要将引号替换为空,修剪引号,或者使用CSV库来正确读取文件。就我个人而言,我以前使用过CSVHelper,它非常棒。你可以从nuget包管理器中获取。
。
var newstring = oldstring.Replace("'"", string.Empty);
你可以访问FileHelperEngine吗?如果是这样,您应该看看它是如何解析文件的。否则,您可以遍历列表并删除引号,或者在对象的setter中删除引号,或者在您认为适合您的解决方案的任何方法中删除引号。