如果我想要在页面上打印一些text
,但只想在打印之前打印前100个单词...最简单的方法是什么?
答案 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 "..."