1

免責事項:私は実際に CSV を解析しているのではなく、CSV のような形式を解析しています。ビルド済みのライブラリを使用することに興味はありません。

次の 2 行を解析する適切な方法は何ですか?:

a,b"c"d,e
a,"bc"d,e

つまり、(a) 値の途中に引用符を付け、(b) 開始位置に引用符を付けますが、次の値の直前に終了引用符を付けません。

これらのケースをどのように処理すればよいかわかりません (それが最も直感的です)。


私の考えでは、(a) はa, b"c"d, (引用符が残っている) として解析され、(b) は , ,とe同じように解析されるべきです。しかし、次に 3 番目のケースを紹介しましょう。2 番目のコンマで「b」と「c」を分割しますか?a"bc"dea,"b,c"d,e

4

2 に答える 2

0

これは、csvをhtmlテーブルに吐き出す私のメソッド(C#)の一部です-そのようなカンマ解析があります:

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;
    }
}
于 2012-03-15T05:19:29.470 に答える