【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サービスです。

「セールサーチ」ネットショップのセール情報の検索サイト!

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

コメントを残す

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