免责声明:我实际上并不是在解析CSV,而是一种类似CSV的格式;我对使用预建库不感兴趣。
解析以下两行的正确方法是什么?:
a,b"c"d,e
a,"bc"d,e
即,(a)在值的中间加引号,(b)在开头有一个引号,但在下一个值之前没有结束引号。
我无法弄清楚我应该如何处理这些情况(这将是最直观的)。
我的想法是(a)应该被解析为a
,b"c"d
,e
(左边的引号),(b)应该以相同的方式解析,{{ 1}},a
,"bc"d
。但接下来让我介绍一个第三个案例,e
- 我们是否在第二个逗号之间拆分了" b"和" c"不是吗?
答案 0 :(得分:0)
这是我的方法(C#)将csv吐到html表的部分 - 它有这样的逗号解析:
string[] cells = line.Split(','); // empty cells needed as well
bool noComma = true;
for (int i = 0; i < cells.Length; i++)
{
string cellI = cells[i];
int numberOfDoubleQuote = cellI.Count(f => f == '"');
// == 0 means comma in between quotes
if (numberOfDoubleQuote == 1)
{
noComma = !noComma;
if (!noComma)
sLine += "<td>" + cellI;
else
sLine += "," + cellI + "</td>";
}
else
{
if (noComma)
sLine += "<td>" + cellI + "</td>";
else
sLine += "," + cellI;
}
}