これつぐです。


手元にある自前のをちょっと修正してみました。
当時の私がどう考えていたのかはわかりませんが、
「foo,」で取り出さずに「,foo」で取り出しているので、
$ の問題は起きないと思います(多分)。


def csv_split(source, delimiter = ',')
  csv = []

  qd = Regexp.quote(delimiter)
  source.scan(/(?:^|#{qd})(?:"((?:[^"]|"")*)"|([^#{qd}]*))/) do
              #↑(先頭|区切文字)("文字列"|文字列)
    |m1, m2|
    csv.push(m2 || m1.gsub(/""/, '"'))
  end
  csv
end