Как отрезать строку в Ruby, используя другую строку? - PullRequest
2 голосов
/ 26 июля 2011

Скажите, что у меня есть предложение, похожее на следующее:

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)

Есть ли лучший способ добиться этого?

Спасибо!

Ответы [ 3 ]

5 голосов
/ 26 июля 2011

Лично мне нравится решение регулярных выражений, но

sentence.split(" jumps ").last

тоже работает, даже если есть несколько «прыжков».

3 голосов
/ 26 июля 2011

Вы можете использовать регулярное выражение:

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

jump - это слово, которое вы ищете, (.*)$ - все до конца строки, а скобки представляют первую группу захватапоэтому упоминается как $ 1)

1 голос
/ 26 июля 2011

Возможно, не лучшее решение, но я бы сделал это так:

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

split делит str на подстроки на основе разделителя, возвращая массив этих подстрок. Индекс массива 1 всегда будет разделом после разделителя. Это ломается, если есть более одного «прыжка»

...