前田です。 At Tue, 22 Jun 1999 22:05:18 +0900, YANAGAWA Kazuhisa <kjana / os.xaxon.ne.jp> wrote: > p "oofoo".rindex "f" #=> 2 > p "oofoo".rindex "f", 1 #=> 2 > p "oofoo".rindex "f", 3 #=> nil > > なもので.rindex の二番目が nil,三番目が 2 となる,「新たにオブジェク > トを生成しないで,さらに ruby レベルでループを回さない」うまい方法はな > いかと思ったわけです. 「新たにオブジェクトを生成しない」というのはちょっと苦しいですけ ど、こんなのはいかがでしょう。 def strrstr(str, pat, start=str.length) n = str.length - start re = Regexp.new(format("%s(?=.*.{%d}$)", Regexp.quote(pat), n)) m = re.match(str) return m && m.begin(0) end p strrstr("oofoo", "f") p strrstr("oofoo", "f", 1) p strrstr("oofoo", "f", 3) ちょっと遅いかな。 -- 前田 修吾