Ruby on rails 摘要文本

Ruby on rails 摘要文本,ruby-on-rails,ruby,string,text,Ruby On Rails,Ruby,String,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

如果我有一些
文本
,我想打印在一页上,但只想打印,在覆盖前说出前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("a b c d", 10)
#-> a b c d

这是如何开始的:

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

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

哪一个性能更好可能取决于函数的编写方式,最有可能的是子字符串操作将比计算空格更快。但是,性能差异可能可以忽略不计,因此除非您经常这样做,否则计算空间可能是最准确的方法


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

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

哪一个性能更好可能取决于函数的编写方式,最有可能的是子字符串操作将比计算空格更快。但是,性能差异可能可以忽略不计,因此除非您经常这样做,否则计算空间可能是最准确的方法

另外,作为参考,英语中一个单词的平均长度


这似乎删除了我的新行。我怎么保存它们?啊\s匹配“空白”,其中包括换行符。尝试将/\s/更改为//(一个空格)或/[]+/(与一个或多个空格匹配),如果可能同时有多个空格。这似乎会删除我的新行。我怎么保存它们?啊\s匹配“空白”,其中包括换行符。尝试将/\s/更改为//(一个空格)或可能的/[]+/(与一个或多个空格匹配)。如果可能有多个空格,那么这将是前100个字符,而不是前100个单词。这将是前100个字符,而不是前100个单词。我非常确定“食”不是您想要的单词。它的意思是“晦涩难懂”,但仅限于天文意义。“省略号”,你似乎不喜欢,是三点思考的名字:“…”省略号真的是你要找的词我很确定“蚀”不是你想要的词。它的意思是“晦涩难懂”,但仅限于天文意义。“省略号”,你似乎不喜欢,是三点思考的名字:“…”省略号真的是你要找的词