estoy leyendo los datos del portapapeles procedentes de Excel usandode Split usando delimitador delimitador excepto cuando se escapó
var stream = (System.IO.Stream) (Forms.Clipboard.GetDataObject()).GetData(Forms.DataFormats.CommaSeparatedValue);
,
pero, por desgracia, Excel está pasando texto de la celda en lugar de los valores de celda. Cuando las células están utilizando un formato especial (tal como separador de miles), los datos del portapapeles para una serie de celdas en las columnas que tiene este aspecto:
1,234,123.00 2,345.00 342.00 12,345.00
se almacena como esto:
\" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \"
cuando lo que realmente quiero es éste:
1234123.00, 2345.00, 342.00, 12345.00
que había estado previamente usando la función clipData.Split(new string[] { "," }, StringSllitOptions.None))
convertir mis datos del portapapeles CSV en una serie de células, pero esto no funciona w Cuando hay texto con formato de escape que contiene comas.
lo que pido si alguien puede pensar en una manera de dividir esta cadena en un conjunto de células, haciendo caso omiso de las comas escaparon dentro de los bits de \"
, ya que esta es la forma en Excel es la elección para escapar de las células que contienen comas.
En pocas palabras, ¿cómo puedo convertir una sola cadena que contiene lo siguiente:
\" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \"
en una matriz de cadenas que contiene lo siguiente:
{ "1,234,123.00", "2,345.00", "342.00", "12,345.00" }
sin arruinar mi capacidad para analizar una sencilla cadena separada por comas .
***** *** editar
Seguimiento pregunta (formulada como DFA) aquí: Split a string based on each time a Deterministic Finite Automata reaches a final state?
¿De verdad está viendo un \ seguido de un" o simplemente está usando \ "para indicar una comilla doble en lugar de una denotación del comienzo de una cadena – juharr
¿No puede obtener los datos en otro formato? Use IDataObject.GetFormats para recuperar una lista de formatos disponibles y vea si puede encontrar uno que funcione mejor. – erikkallen
Bien, voy a tomar mi tiempo evaluando y probando varias de estas soluciones y volviendo a ustedes. – Alain