C#.netの文法について教えてください。


csvファイルからデータを取得し、splitによって配列にデータを保持させたいのですが、csvファイルは数字も日付も文字列もダブルクォーテーションでくくられているため、replaceで消してしまいたいと思っていますが、ダブルクォーテーションをうまく消す方法がわかりません。正しい取得方法をご教示いただけないでしょうか。

sr:StreamReader

line = sr.ReadLine().Replace(""","");

回答の条件
  • 1人2回まで
  • 登録:
  • 終了:2010/06/28 22:24:25
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:noobow34 No.1

回答回数32ベストアンサー獲得回数3

ポイント60pt

line = sr.ReadLine().Replace("\"","");

とすればできます。

\を付けることで"を文字列として扱います。エスケープすると言います。

id:expansion05

ありがとうございます!できました!

2010/06/28 22:24:10
  • id:hissssa
    単なる行単位のReplaceだと誤動作がありえますよ。CSVのカラム内にカンマ文字がある場合、カンマを含んだ全体がダブルクォートで括られるため、単純に除去するとカラムがおかしくなります。
    例えば、2カラムのCSVデータで1カラム目が「a,b」、2カラム目が「c,d」の場合、CSVでは以下のようになります。
    "a,b","c,d"
    これを単純にダブルクォート除去すると「a,b,c,d」となり、4カラムのデータとして処理されてしまうことになります。
    c#でCSVを扱うなら、TextFieldParserクラスを使うほうが簡単ですよ。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません