Резюмировать текст - PullRequest
       15

Резюмировать текст

1 голос
/ 14 апреля 2009

Если у меня есть text, который я хочу напечатать на странице, но хочу напечатать, скажем, первые 100 слов, прежде чем его затмить ... какой самый простой способ сделать это?

Ответы [ 3 ]

5 голосов
/ 14 апреля 2009

Как это для начала:

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 голос
/ 14 апреля 2009

У вас есть несколько вариантов, один из них - сказать, что слово состоит из n символов, а затем взять подстроку такой длины, добавить многоточие в конец. и отобразить это. Или вы можете запустить строку и посчитать количество пробелов, если вы предполагаете, что между каждым словом есть только один пробел, то после пробела будет 100-й пробел, добавьте многоточие, и все готово.

Какой из них имеет лучшую производительность, вероятно, будет зависеть от того, как написаны функции, скорее всего, операция подстроки будет быстрее, чем подсчет пробелов. Тем не менее, разница в производительности может быть незначительной, поэтому, если вы не делаете это много, подсчет пробелов, вероятно, будет наиболее точным способом.

Также, просто для справки, средняя длина слова в английском языке составляет 5,1 символов .

0 голосов
/ 14 апреля 2009
text.slice(0..100)
if text.size > 100 then puts "..."

http://www.ruby -doc.org / ядро ​​/ классов / String.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...