Как получить подстроку от начала строки до последнего вхождения символа, который находится перед определенным индексом в строке в Ruby - PullRequest
1 голос
/ 17 марта 2012

Название может быть запутанным. Просто скажи, что у меня есть статья в газете. Я хочу обрезать его вокруг определенной точки, скажем, 4096 символов, но не в середине слова, а перед последним словом, длина которого превышает 4096. Вот короткий пример:

"This is the entire article."

Если я хочу обрезать его перед словом, длина которого превышает 16 символов, вот результат, который мне нужен:

"This is the entire article.".function
=> "This is the"

Слово «весь» имеет общую длину более 16, поэтому оно должно быть удалено вместе со всеми символами после него и пробелом перед ним.

Вот что я не хочу:

"This is the entire article."[0,15]
=> "This is the ent"

Это выглядит легко при написании, но я не знаю, как применить это в программировании.

Ответы [ 2 ]

5 голосов
/ 17 марта 2012

Как насчет этого для вашего примера:

sentence = "This is the entire article."
length_limit = 16
last_space = sentence.rindex(' ', length_limit) # => 11
shortened_sentence = sentence[0...last_space]   # => "This is the"
1 голос
/ 18 марта 2012

Хотя ответ marco верен для простого рубина, существует более простой вариант, если вы используете рельсы, поскольку он уже включает усеченный помощник (который в свою очередь использует усечение метод добавлен в класс String ActiveSupport):

text = "This is the entire article."
truncate(text, :length => 16, :separator => ' ')
# or equivalently
text.truncate(16, :separator => ' ')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...