2015-08-19 3 views
2

Вот данные, которые я хочу прочитать:FileHelpers: Как обращаться с полей в кавычках при чтении файла

"Adam C. Emality","1Z620Y1V034826","14.40" 
"Ethel Baeron","1Z620Y1V034604","15.19" 
"Donna Lidt","1Z620Y1V034650","12.37" 

Затем после чтения данных, я хочу, чтобы выполнить Регистрация на двух сборниках, один массив и один список - мой код ниже. Однако после выполнения строки чтения мои строки хранятся следующим образом: "\"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; } 
    } 
} 
+1

'\ "'как отладчик отображает'"' внутри строки. Предположительно, 'FileHelperEngine' (независимо от того, что есть) не снимает цитаты из вашего файла. – Blorgbeard

+1

Вы можете использовать '.Trim (" \ "") 'для любой строки, чтобы удалить". –

ответ

1

Это происходит потому, что вы читаете файл как плоскую строку. Файл содержит кавычки, и поэтому они также считываются. Это стандартный формат CSV.

В качестве символа пробега в C# используется косая черта. Так что «на самом деле просто». Вам нужно либо заменить кавычки пустыми, обрезать кавычки, либо использовать библиотеку CSV для правильного чтения в файле. Лично я использовал CSVHelper раньше, и это было здорово. Вы можете получить его от менеджера пакетов nuget.

например.

var newstring = oldstring.Replace("\"", string.Empty); 

У вас есть доступ к FileHelperEngine? Если это так, вы должны посмотреть, как он анализирует файл. В противном случае вы можете перебирать список и вырезать кавычки или вырезать их в сеттерах объектов или, как вам кажется, подходящим для вашего решения.

2

Парсер CSV теперь входит в состав .NET Framework.

Добавить ссылку на 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(); 
} 

Документов являются Here