标题可能令人困惑。只是说我有一篇报纸文章。我想把它剪掉一个特定点,比如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"
写作看起来很容易,但我不知道如何将其用于编程。
答案 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 => ' ')