こんにちは!
今回は「Javascript(js)でテキストファイルを読み込んでDBに格納する際の改行コードの取り扱い」についてお伝えしたいと思います。
僕が作っているwebサービスの中で、テキストファイルを読み込む処理があるのですが、改行コードの取り扱いに失敗し、バグを引き起こしてしまいました。。
macの改行コードにしか対応していなかったため、windowsの改行コードが入ったテキストファイルを読み込んだ際、エラーになってしまいました。
今回はその失敗談を踏まえて、共有させていただきます。
【前提】改行コードはmacとwindowsで異なる
ご存知の方は飛ばしてください。
一般的にmac(linux系)とwindowsでは改行コードが異なります。
改行コード
mac OS:LF
windows:CR+LF
改行コードが異なる→テキストファイルの中身を行単位で読み取りたい場合、キーとなる改行コードの指定方法が異なるということです。
Javascriptでテキストファイルの中身を読み取りたい場合は注意が必要
上でお伝えしたように、macとwindowsでは改行コードが異なるため、Javascriptでテキストファイル(.txt)を読み込む場合には注意が必要です。
例えば、以下のファイルを行単位に読み込みたいとします。
// sample.txt
name1, age1, tel1
name2, age2, tel2
name3, age3, tel3
...
Javascriptでのファイル読み込み処理を書いてみます。
// テキストデータ取得処理
const csvString = getTextData();
// windows改行コード\r\n または mac OS改行コード\nを検知したら分解する
const rows = csvString.split(/\r\n|\n/);
// 以下はNG
// const rows = csvString.split(/\r\n/);
// const rows = csvString.split(/\n/);
// データを加工してDBに登録する
...
ポイントはsprit()の引数の正規表現の書き方です。
mac(linux系)とwindows両方に対応することで、ユーザーのOSに依存せず、適切なファイル読み取りができると思います。
以上、お疲れさまでした🍵