2010-11-30 5 views
1

안녕하세요,단락별로 길이에 따라 텍스트를 분할하는 방법은 무엇입니까? 내가 RedCloth를 사용하고

3. 현재 내가 문자열을 기반으로 기반으로 긴 텍스트를 splitling 레일 "-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 자입니다.

답변

1

먼저 텍스트를 한 문장으로 나눠야합니다. 당신은 유지,이 문장에 가입해야합니다, 그리고

'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

지금 테스트하십시오. 감사. – kgpdeveloper

+0

이것은 완벽하게 작동했습니다. 책을 페이지로 나누기 :) – kgpdeveloper

0

거기에 논리가 내장되어 있다고 생각지 않습니다. 따라서 ""를 찾아야합니다. 멋진 정규식을 사용하여 공백과 대문자가 뒤 따르는 단어 (공백이 아닌) 바로 뒤에 있어야한다는 것을 지정합니다.

편집 : 문자 한도에 가장 근접한 배열을 선택할 수있는 배열을 제공해야합니다.

관련 문제