テキストを指定桁数抜き出す?切り取る?やーーーつ

ブログやrssなんかでよくあるテキストの先頭から50文字だけ切り取るみたいなやつ、結構使えるのでStringクラスにぶっコム。scanで細切れにするってのも考えたけど、文字数が多くなると遅くなりそうなのでヤメ。長文用にstrscanも考えたが結局正規表現でポジションを進めるのでムダが多いから長文でエラー承知で単純にした。
※あまりにもposの位置がデカイと多分エラーになる。30000とか・・・。つか、そんなテキスト処理しないからこれで良いのさ。
UTF-8で改行も含める仕様。

class String
  def cut(length, pos=0)
    self[/^.{0,#{pos}}(.{0,#{length}})/mu, 1]
  end
end

実行してみる

puts "あいうえおかきくけこさしすせそ".cut(10)
#=> "あいうえおかきくけこ"

puts "あいうえおかきくけこさしすせそ".cut(5, 10)
#=> "さしすせそ"