プログラミング フロントエンド

Javascript(js)でテキストファイルを読み込んでDBに格納する際は改行コードに注意!

スポンサーリンク

こんにちは!

今回は「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に依存せず、適切なファイル読み取りができると思います。

以上、お疲れさまでした🍵
 

スポンサーリンク

-プログラミング, フロントエンド
-

© 2021 エンジニア×ライフハック Powered by AFFINGER5