0

Stringbuilder を使用して csv ファイルを作成しようとしていますが、使用しているファイルのフィールドの一部に二重引用符が含まれています"nothing、これは空の文字リテラル エラーをスローします。すべての二重引用符を削除する簡単な方法はありますか `

public void Manipulatefile(string csv, string suffix)
    {
        StringBuilder formattedData = new StringBuilder();

        // Read all file lines into a string array.
        string path = @csv;
        string[] fileLines = File.ReadAllLines(path);

        foreach (string fileLine in fileLines)
        {

            string[] lineItems = fileLine.Split(new char[1] { ',' });


            string forename = lineItems[0];


            string surname = lineItems[1];


            formattedData.Append(forename);

            // Add the CSV seperator.
            formattedData.Append(",");

            // Append the forename to the current CSV output line.
            formattedData.Append(surname);


            formattedData.Append(",");

            formattedData.Append(forename.Substring(1,1));
            formattedData.Append(surname);
            formattedData.Append(suffix);

            formattedData.Replace('"', '');
            formattedData.AppendLine();

            File.WriteAllText(@"C:\test\MyFile.csv", formattedData.ToString());
        }

ありがとう

4

3 に答える 3

3

文字リテラルは、正確に 1 文字である必要があります。Astringは、0 個以上の文字のシーケンスです。文字を表す文字を持つことはできないため、文字を含まない文字列が必要です。

Replaceパラメータとして、文字ではなく文字列を受け入れるの別のオーバーロードがあります。

補足として、CSV ファイルは、フィールド値内の引用符を別の引用符でエスケープできるため、フィールド値が次の場合、次のThis is my "Value"ように記述でき、This is my ""Value""正しく解釈されます。状況で引用符を完全に削除しても問題ない場合は、構文に違反することなく実際に引用符を保持する方法について定義されたケースがあることを知っておいてください。

于 2015-01-07T15:23:26.357 に答える