2010-11-30 13 views
1

こんにちは私はRedCloth、Rails 3を使用しています。長さに基づいて段落ごとにテキストを分割する方法は?

現在、文字列 "-BREAK-"に基づいて長いテキストを分割しています。 文章の途中で分割することなく、文字の長さに基づいてテキストを分割する方法を教えてください。

例えば、1ページを構成することになる

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

まず、テキストを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

これはロジックが組み込まれていないと思うので、 "。"を探してください。素敵な正規表現で、単語(空白ではない)の後に真っ直ぐでなければならず、スペースと大文字が続きます。

編集:これは、文字の制限に最も近いものを選択できる出現の配列を与えるはずです。