1

さまざまな種類のデータでいっぱいのリスト文字列があります。私は一度にリスト文字列行を読んでいて、各行でそれを使用して分割します

string[] tableNa = line.Split(',');

これにより、コンマで区切られた1行のさまざまなデータがすべて取得されます。しかし、私はこのようないくつかの行を持っています:

47,493,'1 = EMPTY, 2 = SEND, 3 = SENDING, 4 = SENT, 5 = NOTSENT. ',0,

これを1つのデータとして保持する必要があるため、引用符内で分割が機能しないようにします。これは可能ですか?

4

2 に答える 2

3

これは可能ですか?

これを行うことは明らかに可能ですが、string.Split他に何もありません。

CSV解析が必要な場合は、優れた(おそらくオープンソースの)CSV解析ライブラリを見つける必要があります。周りにはたくさんあると思いますが、より具体的なビジネス価値を提供しようとする一環として、偶然に作成したものよりも信頼性が高い可能性があります。

于 2012-07-20T11:31:05.113 に答える
2

引用符で囲まれた文字列と引用符で囲まれていない文字列の両方でコンマ区切りの文字列を分割します

具体的には、これ(正規表現は恐ろしいように見えますが、比較的単純です):

public void SplitCSV(string input)
{
    Regex csvSplit = new Regex("(?:^|,)(\"(?:[^\"]+|\"\")*\"|[^,]*)", RegexOptions.Compiled);

    foreach (Match match in csvSplit.Matches(input))
    {
        Console.WriteLine(match.Value.TrimStart(','));
    }
}

private void button1_Click(object sender, RoutedEventArgs e)
{
    SplitCSV("111,222,\"33,44,55\",666,\"77,88\",\"99\"");
}
于 2012-07-20T12:07:38.670 に答える