2012-05-17 10 views
7

Tengo un archivo CSV que se parece a:Filehelpers CSV parsing. ¿Cómo usar el atributo FieldQuoted?

a,b,c 
a,b,c 
a,"b,c",d 

estoy marcando segundo campo en la clase delimitada con el atributo:

[FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)] 
public String ExchangeRate; 

Pero tercera línea sigue siendo "b, c" se analiza como 2 separada valores.

¿Tiene alguna idea de qué estoy haciendo mal?

Gracias

Respuesta

11

que no se puede ver nada malo con su código. Acabo de comprobar: el siguiente programa funciona bien:

[DelimitedRecord(",")] 
public class MyClass 
{ 
    public string Field1; 
    [FieldQuoted('"', QuoteMode.OptionalForBoth, MultilineMode.AllowForRead)] 
    public string ExchangeRate; 
    public string Field3; 
} 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var engine = new FileHelperEngine<MyClass>(); 
     string fileAsString = @"a,b,c" + Environment.NewLine + 
           @"a,b,c" + Environment.NewLine + 
           @"a,""b,c"",d"; 
     MyClass[] validRecords = engine.ReadString(fileAsString); 

     // Check the ExchangeRate values for rows 0, 1, 2 are as expected 
     Assert.AreEqual("b", validRecords[0].ExchangeRate); 
     Assert.AreEqual("b", validRecords[1].ExchangeRate); 
     Assert.AreEqual("b,c", validRecords[2].ExchangeRate); 

     Console.ReadKey(); 
    } 
} 
+0

Gracias, he usado una forma diferente de crear el motor. Tu ejemplo parece estar funcionando bien ... – Sergejs

+0

Ha sido un placer para mí; ¡gracias! +1 para ambos. –