如何从字符串的开头到最后一个出现在Ruby中字符串中特定索引之前的字符的子字符串

时间:2012-03-17 09:46:28

标签: ruby string substring

标题可能令人困惑。只是说我有一篇报纸文章。我想把它剪掉一个特定点,比如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 个答案:

答案 0 :(得分:5)

对于你的例子,这样的事情怎么样:

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 :(得分:1)

虽然marco的答案对于普通红宝石来说是正确的,但如果您碰巧使用rails,则会有一个更简单的变体,因为它已经包含truncate helper(后者又添加了truncate method ActiveSupport的String类:

text = "This is the entire article."
truncate(text, :length => 16, :separator => ' ')
# or equivalently
text.truncate(16, :separator => ' ')