2

假设我有一个类似于以下的句子:

The quick brown fox jumps over the lazy dog

我想切掉之前的所有内容,包括“跳跃”,所以我只剩下:

 over the lazy dog

目前,我得到了要删除的部分的索引,然后将该部分的长度添加到其中,然后对其进行切片,如下所示:

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)

有没有更好的方法来实现这一目标?

谢谢!

4

3 回答 3

5

就个人而言,我喜欢正则表达式解决方案,但是

sentence.split(" jumps ").last

也有效,即使有多个“跳跃”。

于 2011-07-25T21:20:38.843 回答
3

您可以使用正则表达式:

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

jump是您要查找的单词,(.*)$是字符串结尾之前的所有内容,括号表示第一个捕获组(因此引用为 $1)

于 2011-07-25T21:08:06.787 回答
1

也许不是最好的解决方案,但我会这样做:

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

split 根据分隔符将 str 划分为子字符串,返回这些子字符串的数组。数组索引 1 将始终是分隔符之后的部分。如果有多个“跳跃”,则会中断

于 2011-07-25T21:14:23.320 回答