Как разделить текст на абзац по длине? - PullRequest
1 голос
/ 30 ноября 2010

Привет, я использую RedCloth, Rails 3.

В настоящее время я разбиваю длинный текст на основе строки "-BREAK-".Как разделить текст по длине символа без разбиения в середине предложения.

Например,

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas at purus eu nisl consequat mattis. Morbi pretium eros eget erat ornare elementum. 

Vivamus in dui sit amet tellus bibendum volutpat. Sed lorem sem, porttitor at mattis quis, volutpat sed quam. Vestibulum eu justo nec dui ullamcorper molestie. Sed eleifend malesuada mattis. Curabitur eleifend elit vitae justo feugiat iaculis. Etiam sed lectus eu quam suscipit fermentum id a sem. 

Phasellus sed odio eu urna gravida venenatis venenatis non justo. Praesent tincidunt velit adipiscing ligula pretium commodo. Cras blandit, nibh ac sagittis egestas, enim odio rutrum metus, vel hendrerit felis urna cursus odio. Maecenas elementum erat et arcu vulputate eu fermentum orci semper. Proin luctus purus sit amet nibh blandit cursus.

Это будет одна страница.Это около 794 символов.

Ответы [ 2 ]

1 голос
/ 30 ноября 2010

Сначала вы должны разбить текст на отдельные предложения.

Вот простой, далеко не идеальный способ сделать это (я уверен, вы могли бы найти множество более полных шаблонов в другом месте):

'Gsda asd. Gasd sasd. Tfed fdd.'.scan(/(.+?\.) ?/).map(&:first)
#=> ["Gsda asd.", "Gasd sasd.", "Tfed fdd."]

Затем вы должны присоединиться к этим предложениям, следя за длиной абзаца. Вы можете использовать что-то вроде этого:

# using words as units, but sentences are just the same:
s = ['foo', 'bar', 'beef', 'baz', 'hello', 'chunky', 'bacon']
LEN = 7 # minimum length of a paragraph
s.inject([]){|a,i|
  if !a.last || a.last.length > LEN
    a << i
  else
    a.last << " #{i}"
  end
  a
}
#=> ["foo bar beef", "baz hello", "chunky bacon"]
0 голосов
/ 30 ноября 2010

Я не думаю, что для этого есть какая-то встроенная логика, поэтому вам нужно просто искать "." с хорошим регулярным выражением, также указывающим, что оно должно быть сразу после слова (не пробела), за которым следует пробел и заглавная буква.

Редактировать: это должно дать вам массив вхождений, из которого вы можете выбрать ближайший к персонажу предел.

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