https://zenn.dev/chae_rryontop/articles/58b843cc3b358d
こんばんは〜! チェリニャン😽です。
今日は仕事中に気になったことについて書いてみようと思います。 私は javascript でコードを書きながら split() 関数を使いました。 split()関数の中には色んな文字を書けますが、 今回私は並び替えられている文章を一行ずつ切って配列に入れたかったです。
これをHi, my name is chaerrynyan. I am an engineer.I sometimes write on Zenn.
このような配列に!['Hi, my name is chaerrynyan.','I am an engineer.','I sometimes write on Zenn.']
普通なら split('\n') を使いますが、なぜか split('\r\n') を書いても同じ結果が出たので、 その理由とどっちがもっと正確な表記なのか知りたかったです。
(本文を作成する前... 私はmacOSmontereyを使っています。)
split('\r') の '\r' は Carriage Return、意味は「行の一番前に移動する」です。split('\n') の '\n' は Line Feed、意味は「次の行に移動する」です。
この言葉は昔のタイプライターから来た言葉です。
typewriter
昔のタイプライターは行を変えるために手動で紙を動かさなければなりませんでした。 Carriage Returnは紙の左の部分タイプライターの左の部分と合わせること、Line Feedは紙を一つの行だけ上に動くことでした。 それで、昔のタイプライターはCarriage Return('\r')とLine Feed('\n')を両方('\r\n')やってこそ、改行処理が可能でした。
パソコンの画面(display)を使ってからはもうCarriage Return('\r')は必要なくなって、Line Feed('\n')だけでも行を変えることができるようになりました。
でも面白いのはOSによってこの改行の方法が少し違います。
windows : CRLF('\r\n') unix : LF('\n') macOS : LF('\n') (バージョン9までは CR, 後からは LF)
改行は今回みたいにsplit()関数を使う時以外にも、ファイルの最後の行に改行を入れる時に重要になります。 この場合は、協業による開発の際、もし開発者同士のOSが異なると問題が発生する可能性があります。Gitにはこれを解決する方法があります!