【javascript】ダブルクオーテーションありのCSVファイルを区切り文字で分割するモジュール(Node.js)

投稿者: | 2019年1月18日

javascriptのファイル読み込みを実装していて、汎用的に使えそうなモジュールを書いたので公開しておきます。以下のようなダブルクオーテーションありのcsvファイルを区切り文字で分割するモジュールです。

■CSVのイメージ
"hogehoge,hogehoge,hogehoge",1000,2000,"hoho,gege"

 

このファイルを以下のように区切り文字で分割して読み込みます。

■CSVを区切り文字で分割して配列に突っ込む。こんな感じに分割される↓
strs = ['hogehoge,hogehoge,hogehoge', '1000', '2000', 'hoho,gege']

 

ダブルクオーテーションありのCSVファイルを区切り文字で分割するモジュール

javascriptのソースは以下になります。

exports.go = function (line) {
const separater = ','
const escape = '"'
let strs = []
let isEscape = false
let tmp = ''
for (let i = 0; i < line.length; i++) {
let c = line[i]
if (c === escape) {
if (isEscape) {
isEscape = false    
} else {
isEscape = true
}
} else if (c === separater && !isEscape) {
strs.push(tmp)
tmp = ''
} else {
tmp = tmp + c
}
if (i === line.length - 1){
strs.push(tmp)
}
}
return strs
}
  • separater => 区切り文字です。ここでは「,(カンマ)」を設定しています。
  • escape => 囲まれている文字列を区切り文字が存在しても分割しないエスケープ文字です。ここでは「”(ダブルクオーテーション)」を指定しています。

モジュールの呼び出し元は以下のようになります。

var module = require('modulepath') // 上記のモジュールのファイルパスを指定
var text = '"hogehoge,hogehoge,hogehoge",1000,2000,"hoho,gege"'
var strs = module.go(text)
console.log(strs)

 

誰かの参考になれば幸いです。


カツオが開発したWebサービスです。

平成の想い出を気軽に年表にしてシェアすることができるサービスです。ぜひ使ってみてください。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です