高橋です。 中田@Vectorさん: > これ、便利に使わせていだだいております。で、ちょっと不具合を見つけたので > 修正してみました。 う、すみません。確かに間違ってますね。正規表現もruby流にして なかったし。 その他、ruby1.1b8に環境を替えた(でも、もうb9だし……)のもあって、 細かいところを直したりしました。ので、もう一度投稿します。 # a ? b : c とか、 String::empty? とかが使えるようになったので(^^)
#!/usr/local/bin/ruby # # csv2table.rb # ### String::csv_split class String def csv_split(delimiter = ',') csv = [] data = "" self.chomp.split(/#{delimiter}/o).each{|d| data += (data.empty? ? '' : delimiter) + d if /^"/o =~ data if /[^"]"$/o =~ data or /^""$/o =~ data csv << data.sub(/^"(.*)"$/o,'\1').gsub(/""/o,'"') data = '' end else csv << d data = '' end } data.empty? ? csv : raise("cannot decode CSV\n") end end ### main print "<TABLE>\n" while gets print "<TR><TD>#{$_.csv_split.join('</TD><TD>')}</TD></TR>\n" end print "</TABLE>\n"