总结文字

时间:2009-04-14 12:09:41

标签: ruby-on-rails ruby string text

如果我想要在页面上打印一些text,但只想在打印之前打印前100个单词...最简单的方法是什么?

3 个答案:

答案 0 :(得分:5)

如何开始:

def first_words(s, n)
  a = s.split(/\s/) # or /[ ]+/ to only split on spaces
  a[0...n].join(' ') + (a.size > n ? '...' : '')
end

s = "The quick brown fox jumps over the lazy dog. " * 20

puts "#{s.size}, #{s.split(/\s/).size}" 
#-> 900, 180

puts first_words(s, 10)
#-> The quick brown fox jumps over the lazy dog. The...

puts first_words("a b c d", 10)
#-> a b c d

答案 1 :(得分:1)

你有两个选择,一种方法是你可以说一个单词是 n 字符,然后取一个这个长度的子字符串,将ellipsis追加到最后显示它。或者你可以运行字符串并计算空格的数量,如果你假设每个单词之间只有一个空格,那么第100个空格将在第100个单词之后,附加省略号,你就完成了。

哪一个具有更好的性能可能取决于函数的编写方式,很可能子字符串操作比计算空间更快。但是,性能差异可能微不足道,所以除非你这么做,否则计算空间可能是最准确的方法。

另外,作为参考,使用英语is 5.1 characters中单词的平均长度。

答案 2 :(得分:0)

text.slice(0..100)
if text.size > 100 then puts "..."

http://www.ruby-doc.org/core/classes/String.html