In <200103091451.XAA06181 / mail2.rim.or.jp>
On Fri, 9 Mar 2001 23:51:21 +0900
Akihiro Yamauchi <aygoofy / kt.rim.or.jp> wrote:
> たとえば
> str = 'abcdefghi'
> 
> というような文字列があって、2文字目から5文字とりたいな、と思ったときに
> 
> puts str[1,5]
> とかやりますが、
> 
> str = 'あいう123えおabc'
> のような日本語が入ったものの場合ふつうどうするものでしょう?
> 
> puts str[1,5]
> ではうまくいかなかったので、
> 
> class String
>   def jslice(from, len)
>     self.split(//).slice(from, len).to_s
>   end
> end
> 
> puts str.jslice(1,5)
> 
> とかでっちあげてしまったのですが、どうするのがいいんでしょう?

こんな感じでどうでしょうか?

class String
  def jslice(from, len)
    if /^.{#{from}}(.{0,#{len - from}})/ === self
      $1
    else
      ''
    end
  end
end


-- 
|ZnZ(ゼット エヌ ゼット)
|西山和広(Kazuhiro NISHIYAMA)