読み書きプログラミング

日常のプログラミングで気づいたことを綴っています

先頭行を取り出す

(たまたまRubyでコーディングしていたのでRubyタグを付けました。)

複数行を含む文字列から先頭行を取り出す必要がありました。
最初浮かんだのは、行に分割して先頭を参照。

head = string.split(/\r?\n/)[0]

これだと先頭以外も分割するという不要な演算をしているので頭の中で却下しました。
で、書いたコードはこちら。

head = string[/.*/]

正規表現の.(ピリオド)は改行コード以外の文字とのことなので、「Rubyかっちょええ」と悦に入ったのですが、エンバグしてました。

string = "abc\r\ndef\r\nghi"
head = string[/.*/] # => "abc\r"

結局以下のようにしました。

head = string[/[^\r\n]*/]