总结文字

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

这是怎么开始的:

 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("abcd", 10) #-> abcd 

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

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

另外,作为参考,英语中单词的平均长度为5.1个字符 。

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

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