Tengo un archivo CSV (que no diseñé y no puedo cambiar ahora ni nunca podré cambiarlo) que contiene líneas como las siguientes:División de cadena en comas cuando los datos pueden contener comas
"Surname, Firstname", yes, no, somestring, whatever, etc
Como se puede ver aquí, la primera ,
no es una coma en el que me gustaría dividir la cadena. Tenga en cuenta que esta coma en particular está dentro de las comillas.
Debido a esto, un simple string.split(',')
, obviamente, no va a funcionar, ya que me daría una matriz de longitud 7 para la cadena anterior en lugar de 6.
¿Hay alguna forma de evitar esto? Estaba pensando usar regex para dividir la cadena, pero no soy lo suficientemente competente en expresiones regulares para pensar en un patrón que solo se divida en comas que no están entre comillas.
Puedo pensar en maneras feas y hacky de hacerlo leyendo cada cadena char por char, pero esto tendría que ser un último recurso, ¡ya que estoy seguro de que hay una mejor manera de hacerlo!
Esto parece un .csv de Excel. Siempre divertido. Más divertido es cuando los datos contienen comillas y comas ... –
No es realmente de Excel, pero sí, ¡divertido! :) Es desde una ubicación en la red, mi programa lee el archivo e intenta analizarlo. – AndrewC
Leer un carácter a la vez no es necesariamente un hack feo. Recomiendo encontrar un analizador de C# CSV, ya que estoy seguro de que tales cosas ya existen. –