Last updated on

CSVの項目にカンマが含まれる場合の処理(VB.net)


CSVファイルをデータベースに取り込んで、
データ管理がしたくなることがあります。
銀行口座やクレジットの履歴を取り込むプログラムを作るとき、
CSVの項目にカンマが含まれていて、うまく取込ができないという悩みを聞きます。

CSVの項目にカンマが含まれている場合、
その項目はダブルクォーテーション(“)で囲まれています。

CSVの項目に含まれるカンマを除去するVB.netのコードです。

1,2,3,“あいう,えお”,4,5

という行を

1,2,3,“あいうえお”,4,5

に変換します。

Dim sCSVLine As String ‘CSVファイルの1行
Dim sText1 As String ‘取り出した文字列
Dim sTemt2 As String ‘取り出した文字列から , を削除したもの

sCSVLine = “1,2,3,""あいう,えお"",4,5”
Dim mc As System.Text.RegularExpressions.MatchCollection = _
    System.Text.RegularExpressions.Regex.Matches( _
    sCSVLine, ”\,\"".+?\""\,”)

’ ,” と ”, に囲まれた文字列を取り出す
For Each m As System.Text.RegularExpressions.Match In mc
    sText1 = m.Value ’ ,“あいう,えお”,

‘sText1から、 ,“あいうえお”, という文字列を作る
    sTemt2 = sText1.Replace(”,""", "") ’  ,” を一旦削除
    sTemt2 = sTemt2.Replace(""",”, "") ’  ”, を一旦削除
    sTemt2 = sTemt2.Replace(”,”, "") ’  , を削除

sTemt2 = ”,""" & sTemt2 & """,” ’ ,” と ”, を、もう一度つけた

sCSVLine = sCSVLine.Replace(sText1, sTemt2)

Next

“あいう,えお”が複数あっても大丈夫です。 “あいう,えお”が、一番最後の項目にあるパターンに対応するには、 CSVの行の最後に , を付けてから処理すればよいです。

“あい""う,えお"
"あいう"",えお”とか”あいう,""えお”というパターンに対応したい場合は、
処理の前で、 "", や ,"" を、別の文字に変換しておいて、
後で、 "" に変換すればよいです。