2011-09-16 3 views
0

Я пытаюсь сгенерировать CSV-файл после чтения данных из базы данных. Теперь отдельные данные могут содержать запятую, одинарные кавычки и двойные кавычки.Регулярное выражение для обработки запятой, двойных кавычек, котировок

Прошу совета, как я могу справиться с этой ситуацией с помощью регулярного выражения.

+0

Возможный дубликат [csv api для java] (http://stackoverflow.com/questions/101100/csv-api-for-java) – Mat

+0

Если один из ответов вы решили решить вашу проблему, пожалуйста, примите его, нажав на галочке. – andronikus

ответ

2

Можете ли вы использовать другой разделитель для вашего CSV-файла? Возможно, труба (|)?

1

Ну, запятые на самом деле не проблема, потому что они заключены в двойные кавычки, чтобы обозначить строку. То же самое для одиночных кавычек. Единственное, что вам нужно сделать, это избежать двойных кавычек. Вот пример:

Джо сказал: «Иди домой и не опаздывай, я попаду в« большие неприятности ».

станет

«Джо сказал„“Иди домой и не опаздывать. Я хотел бы получить в„большой“неприятности». «»

+0

Обратные косые черты не используются для удаления символов в CSV-данных. – Guffa

+0

CSV не является реальным стандартом, и интерпретация варьируется в зависимости от программ, увы, но в целом двойные кавычки удваиваются, чтобы сбежать. – PhiLho

+0

Вы правы. Вместо этого вы удваиваете двойные кавычки. Я исправлю это. – mamboking

2

Самый простой заключается в том, чтобы помещать кавычки вокруг всех данных, тогда вы можете без проблем получить запятые, кавычки (двойные кавычки) и разрывы строк в данных.

Вам нужно только избежать кавычек в данных, заменив их двойными кавычками. Для этого вам не нужно регулярное выражение, просто используйте регулярную замену строки.

Апоптопы (одинарные кавычки) не имеют особого значения в формате CSV, поэтому они не являются проблемой.

0

Написание функционального анализатора CSV не является тривиальной задачей, хотя формат данных настолько прост. Вместо этого рассмотрите возможность использования библиотеки для этого. Я использовал CSVReader library, и это очень просто. На сайте также содержатся образцы кода.

Смежные вопросы