У меня две ситуации:

Во-первых, у меня может быть такая строка:

  Posted 03-20-2017 More info Go to Last Post

И у меня может быть такая строка:

  Posted today More info Go to Last Post

В обеих ситуациях я ничего не хочу от Подробнее ...

Я пытался использовать gsub, но это не работает в обеих ситуациях. У кого-нибудь есть возможное решение?

1
Hima Chhag 31 Мар 2017 в 21:14

2 ответа

Лучший ответ

Это можно относительно легко выполнить, запустив split("More info") в ваших строках. То, что это делает, разбивает строку на массив следующим образом:

new_string  = "Posted today More info Go to Last Post"
new_string = new_string.split("More info")
# becomes ["Posted today ", " Go to Last Post"]

Что делает split - это разбивает строку на части в массиве, где каждый элемент - это то, что предшествовало аргументу. Так что если у вас есть "1,2,3", то split(",") вернет [1, 2, 3]

Таким образом, чтобы продолжить ваше решение, вы можете получить дату публикации следующим образом:

new_string[0].strip

.strip удаляет пробелы в начале или в конце строки, поэтому у вас останется только "Posted today"

2
octopushugs 1 Апр 2017 в 21:18

Используйте подпрограмму Ruby, которая даст вам копию первого вхождения замененного шаблона для второго аргумента .

Таким образом, он займет всю вашу строку "Posted 03-20-2017 More info Go to Last Post", найдет ваш шаблон и все, что будет после More info..., и заменит его вторым аргументом More info, который в данном случае совпадает как первый (вы можете использовать переменную там).

"Posted 03-20-2017 More info Go to Last Post".sub /More info.*/, 'More info'
=> "Posted 03-20-2017 More info"

Также gsub работает аналогичным образом.

1
Sebastian Palma 31 Мар 2017 в 18:28