Nokogiri を使用すると、テキストの周りに任意のマークアップを含めることができ、<br /> などで壊れます。
ng = Nokogiri::HTML.fragment("<p>hello, how are you? oh, that's nice! i am glad you are fine. i am too.<br />i am glad to have met you.</p>")
ng.traverse{|n| (n.content = n.content.gsub(/(.*?)([\.|\!|\?])/) { " #{$1.strip.capitalize}#{$2}" }.strip) if n.text?}
ng.to_s
与える:
"<p>Hello, how are you? Oh, that's nice! I am glad you are fine. I am too.<br>I am glad to have met you.</p>"
最初に、停止/質問/感嘆符の後の文には空白があり、それ以外の場合は大文字にならないため、ストリップを2回使用しました。次に、スペースを元に戻すために、各文の前にスペースを追加しました.2番目のストリップは、最終出力。