Hatena::Grouprubyist

雲雀は高く空を舞い RSSフィード

 | 

2007-06-15

文字列にアクセス 11:40  文字列にアクセス - 雲雀は高く空を舞い を含むブックマーク はてなブックマーク -  文字列にアクセス - 雲雀は高く空を舞い  文字列にアクセス - 雲雀は高く空を舞い のブックマークコメント

文字列の末尾 - 只今Ruby勉強中 - Rubyistより

文字列の末尾を取得するのってこんな感じでいいのかな?

irb(main):001:0> str = 'hogefuga'
=> "hogefuga"
irb(main):002:0> str[-1, 1]
=> "a"
文字列の末尾 - 只今Ruby勉強中 - Rubyist

str[-1,1]が分からなかったので調べてみた。

楽しいRuby pp.185-186より

a[n,length]で配列aの要素a[n]からlength個の要素を取り出して新しい配列を作りそれを返す。

インデックスの値がマイナスの数の場合、先頭からではなく、末尾から数えます。とのこと。

じゃあ、nがマイナスでlenが2以上の場合は?

str(-2,2)はこの場合何が返ってくるんだろう?

p str[-2, 2]#=> "ga"
p str[-2, 3]#=> "ga"
p str[-2, -2]#=> nil

との事で、後ろから2番目の文字から末尾に向かって二文字取り出されるのでした。

じゃあ

last(n, len)とした時に、後ろからn番目の文字を起点として頭の方にlen文字取り出す様なメソッドを作ってみた。

class String
  def last(n,len)
  n = -n
  len = -len
  ind = n
  out = ""
  
  while ind > n+len
    out<< self[ind].chr
    ind = ind-1
  end
  p out
end
end
  
 str.last(5,3) # =>"ego"

gan2gan22007/12/29 02:34決まった回数の繰り返しをしたいときは Integer#times が便利ですよ。

class String
def last(n, len)
ret = ""
len.times{|i| ret << self[-n-i]}
ret
end
end

str = "hogefuga"
p str.last(5, 3) #=> "ego"

 |