0

私はこのようないくつかの行を含むCSVファイルを持っています:

"bar","foo, bar","18","07/09/2012 02:08:16","payments, recent","payments, all"

一部の値にはコンマが含まれています。この結果を取得するには、これらのコンマを削除する必要があります。

"bar","foo bar","18","07/09/2012 02:08:16","payments recent","payments all"

私はこの正規表現から始めまし"^(\".+\"\\,?)+$"たが、それは私には非常に複雑になります。


最終的な目標は、その文字列を分割することです。

string content = reader.ReadToEnd();

string[] lignes = contenu.Split(new[] { Environment.NewLine }, StringSplitOptions.None);

for (int i = 1; i < lignes.Length; i++)
{
    // REMOVE COMMAS

    string[] values = csv.Split(new[] {','});

    // do something
}

reader.Close();

ありがとう。

4

4 に答える 4

5

有効なCSVファイルを手動で解析する代わりに(コンマは引用符で囲まれたフィールド内で許可されます)、これらの処理方法を知っているCSVパーサーを使用する必要があります。

人気のあるライブラリはFileHelpersTextFieldParserMicrosoft.VisualBasic.FileIO名前空間にあります。

于 2012-10-08T15:33:55.520 に答える
1

TextFieldParserクラスを使用します。引用符で囲まれたcommasを処理できます。

http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.fileio.textfieldparser.aspx

于 2012-10-08T15:36:28.930 に答える
1

最初にデータの簡単なマッサージを行うことができます。たとえば、次のようになります。

   string content = "\"bar\",\"foo, bar\",\"18\",\"07/09/2012 02:08:16\",\"payments, recent\",\"payments, all\"";

    content = content.Replace("\",\"", "~");
    content = content.Replace(",", ""); // Safe to remove commas now.
    content = content.Replace("\"", ""); // Get rid of left over double quotes.

    string[] values = content.Split(new[] { '~' });
于 2012-10-08T16:01:50.933 に答える
0

以下を使用できます。メソッド名を無視して、ファイルをテーブルにインポートしてください。

  private void ImportCSV(string filePath = @"E:\nucc_taxonomy_140.csv", string tableName = "TempTaxonomyCodes")
    {
        string tempPath = System.IO.Path.GetDirectoryName(filePath);
        string strConn = @"Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" + tempPath + @"\;Extensions=asc,csv,tab,txt";
        OdbcConnection conn = new OdbcConnection(strConn);
        OdbcDataAdapter da = new OdbcDataAdapter("Select * from " + System.IO.Path.GetFileName(filePath), conn);
        DataTable dt = new DataTable();
        da.Fill(dt);

        using (SqlBulkCopy bulkCopy = new SqlBulkCopy(ConfigurationSettings.AppSettings["dbConnectionString"]))
        {
            bulkCopy.DestinationTableName = tableName;
            bulkCopy.BatchSize = 50;
            bulkCopy.WriteToServer(dt);
        }

    }
于 2014-05-31T05:54:12.413 に答える