FileHelpers не влияет на данные

Когда я определяю запятую как разделитель файлов для нового файла, я только что заметил, что когда я помещал запятую в данные, эта запятая будет помещена в выходной файл, значит ли это, что FileHelpers не влияет на сами данные автоматически или? Например, также для кавычек или чего-то еще, как я думал, FileHelpers уже содержит внутренние механизмы для автоматического «исправления» таких вещей.


person Community    schedule 12.09.2016    source источник


Ответы (1)


Вы должны добавить [FieldQuoted], чтобы библиотека автоматически использовала кавычки, когда поля содержат разделитель

http://www.filehelpers.net/docs/html/T_FileHelpers_FieldQuotedAttribute.htm

Также проверьте параметр QuoteMode

http://www.filehelpers.net/docs/html/T_FileHelpers_QuoteMode.htm

[DelimitedRecord(",")]
public class Records
{
   // It will always contains " on output and require it for read
   [FieldQuoted(QuoteMode.AlwaysQuoted)]
   public string Name;

   // It will add " if the data cantains a , and will read with no quotes
   [FieldQuoted(QuoteMode.OptionalForBoth)]
   public string Track;

   [FieldQuoted]
   public string worldPrice;
}   
person Marcos Meli    schedule 12.09.2016
comment
@MarcosMeil Пожалуйста, ответьте мне на этот 1-й вопрос: как я вижу, если я использую QuoteMode.AlwaysQuoted - тогда все, что находится в данных, например, двойные кавычки, запятые останутся такими, какие они есть, но все данные будут окружены правильно? 2-й вопрос: если я использую QuoteMode.OptionalForBoth и внутри будут запятые и кавычки, то все останется как есть, но все данные будут заключены в кавычки, НО если в данных нет дополнительных запятых, а есть только дополнительные кавычки, все данные будут окружены НО дополнительные кавычки будут сокращаться до каждого --› можете пояснить? - person ; 13.09.2016
comment
@JimmyJimm Exactly AlwaysQuoted всегда добавляет к выводу. OptionalForWrite и OptiminalForBoth добавят, если данные содержат NewLine (в MultilineMode) или Delimiter (в вашем случае), если онлайн содержит a без запятых, поэтому библиотека не избегает этого, потому что уникальная проблема - это разделитель - person Marcos Meli; 13.09.2016
comment
я заметил только без какого-либо определения QuoteMode, данные останутся, как это правильно? Можете ли вы также объяснить, почему OptiminalForBoth и OptionalForWrite дублируют двойные кавычки в данных, например, эта строка: ddddddhhh будет выводиться следующим образом: ddddddhhh, поэтому не только заключать в двойные кавычки, но и дублировать дополнительные кавычки внутри. - person ; 13.09.2016
comment
P.S. Я не вижу никакой разницы между OptiminalForBoth, OptiminalForRead, OptiminalForWrite — как я вижу во время теста, все одинаково, используя один из трех. - person ; 13.09.2016
comment
@JimmyJimm Экранирование двойных кавычек - это то, что делает csv, чтобы поле не заканчивалось там - person Marcos Meli; 13.09.2016
comment
значит ли это, что для каждой дополнительной двойной кавычки будет создаваться дополнительная? И в чем разница между тем деревом, которое я упомянул, поскольку я не вижу разницы в действии? - person ; 13.09.2016