2011-07-25 7 views
2

は、私は次のような文があるとしましょう:別の文字列を使ってRubyで文字列を切り取る方法は?

The quick brown fox jumps over the lazy dog 

私は "ジャンプ" の前を含め、すべてをオフにスライスしたいと思いますので、私は左にしています:現在

over the lazy dog 

、I一部のインデックスを取得し、私のような、それにその部分の長さを追加し、削除し、それをスライスしたいと思います:

sentence = "The quick brown fox jumps over the lazy dog" 
slice_index = sentence.index("jumps").to_i + sentence.size 
sliced_sentence = sentence.slice(slice_index..-1) 

はこれを達成するための良い方法はありますか?

ありがとうございます!

答えて

5

「ジャンプ」がある場合、これは壊れるが、

sentence.split(" jumps ").last

は「ジャンプ」が複数ある場合でも、あまりにも動作します。

+0

非常に簡単なソリューションをありがとう!まったく同じ結果を得るために行っていたすべての合併症よりもはるかに優れていて、複数のマッチに対応しています。とても有難い! –

+2

代わりに 'rpartition'を使う方が高速です。 –

3

あなたは正規表現を使用できます。

sentence =~ /jumps(.*)$/ 
sliced_sentence = $1 
#=> " over the lazy dog" 

jumpあなたが探している単語が(.*)$がすべてだ、であるが、文字列の末尾とブラケットは、それゆえとして参照される最初のキャプチャグループを(表すまで$ 1)おそらく

+0

正規表現の使用を考えていないため、私は頭の中で自分自身を打っています!それは最も直観的なアプローチであり、この質問はワンアップを得る。しかし、私はRubyの関数だけを使って彼の1行のソリューションをKyleに与えています。どうもありがとうございました! –

1

ない最善の解決策が、私はそうのようにそれを行うだろう:

sentence = "The quick brown fox jumps over the lazy dog" 
sentence.split(" jumps ")[1] 

スプリット除算strを区切り文字に基づいて部分文字列に変換し、これらの部分文字列の配列を返します。配列インデックス1は常に区切り文字の後のセクションになります。私は正規表現のソリューションを好む、複数の個人的

+0

ありがとうございました! –

関連する問題