игнорирование содержимого заголовка текста - PullRequest
0 голосов
/ 28 марта 2011

Я хочу избавиться от содержимого файла перед «этим словом» и записать только строки после этого слова на диск.

text = <<EOT
  I only want
  the last lines
  of the file after
  this word. This is
  the content I 
  want. Yet this
  word can appear again.
EOT

puts text.scan("this word")

ожидаемый вывод:

This is
the content I 
want. Yet this
word can appear again.

Какой самый эффективный способ сделать это?

Любая помощь приветствуется

Тед.

Ответы [ 4 ]

1 голос
/ 28 марта 2011

Если «это слово» появляется только один раз в вашем тесте, или если вы хотите удалить до последней такой фразы:

text.sub(/.*this word\W*/, '')

Если существует возможность, что «это слово» появляется несколько раз, и вы хотите удалить только до первого из таких:

text.sub(/.*?this word\W*/, '')
0 голосов
/ 28 марта 2011

Один простой способ - использовать метод разбиения:

text.partition("this word. ").last

(при этом предполагается, что «это слово» действительно отображается в тексте переменной. Если этого не произойдет, будет возвращена пустая строкапо этому коду.)

0 голосов
/ 28 марта 2011

В одну сторону:

text.split('this word. ')[1]

Или

text.split('this word. ').last
0 голосов
/ 28 марта 2011

Как это?

irb(main):001:0> text = <<EOT
irb(main):002:0"   I only want
irb(main):003:0"   the last lines
irb(main):004:0"   of the file after
irb(main):005:0"   this word. This is
irb(main):006:0"   the content I 
irb(main):007:0"   want.
irb(main):008:0" EOT
=> "  I only want\n  the last lines\n  of the file after\n  this word. This is\n  the content I \n  want.\n"
irb(main):009:0> needle = 'this word. '
=> "this word. "
irb(main):012:0> text[text.index(needle)+needle.length..-1]
=> "This is\n  the content I \n  want.\n"
irb(main):013:0> print text[text.index(needle)+needle.length..-1]
This is
  the content I 
  want.
=> nil
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...