我正在使用以下代码读取来自Excel的剪贴板数据:
var stream = (System.IO.Stream)(Forms.Clipboard.GetDataObject()).GetData(Forms.DataFormats.CommaSeparatedValue);
但不幸的是,Excel传递的是单元格文本而不是单元格值。当单元格使用特殊格式(例如千位分隔符)时,列中一系列单元格的剪贴板数据如下所示:
1,234,123.00 2,345.00 342.00 12,345.00
存储为以下内容:
\" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \"
当我真正想要的是这个时候:
1234123.00, 2345.00, 342.00, 12345.00
我之前一直使用clipData.Split(new string[] { "," }, StringSllitOptions.None))
函数将我的CSV剪贴板数据转换为一系列单元格,但是当有包含逗号的转义格式文本时,这种方法会失败。
我想知道是否有人能想到一种方法来将此字符串拆分为一组单元格,并忽略在\"
中转义的逗号,因为这就是Excel选择转义包含逗号的单元格的方式。
简而言之,我如何将包含以下内容的单个字符串转换为一组单元格:
\" 1,234,123.00 \",\" 2,345.00 \", 342.00 ,\" 12,345.00 \"
将其转换为包含以下内容的字符串数组:
{ "1,234,123.00", "2,345.00", "342.00", "12,345.00" }
不要破坏我的解析简单逗号分隔字符串的能力。
*****编辑***
跟进问题(作为DFA构成)在这里:Split a string based on each time a Deterministic Finite Automata reaches a final state?