Rails: заглавные буквы после определенной строки - PullRequest
2 голосов
/ 04 октября 2011

Использование: Rails 3.0.3.

У меня есть строка, которую можно увидеть как эта:

<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>

Я хочу, чтобы каждый символ следовал за любым из <p> <br /> ! ?.быть заглавными.По сути, приведенная выше строка выглядит хорошо.

Существует ли стандартная функциональность для этого?Что мне делать?

пс.Пытался выделить символы, о которых идет речь, но это не сработало ...

Ответы [ 4 ]

2 голосов
/ 05 октября 2011

Используя Nokogiri, вы можете иметь любую разметку вокруг текста, и она разбивается на
и т. Д.

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>"

Я использовал полосу дважды, сначала потому, что в предложении после остановки / вопроса / восклицания будет пробел, а не заглавные буквы, затем, чтобы вернуть интервал, я добавил пробел перед каждым предложением - вторая полоса удаляет сгенерированное пространство в начало финального вывода.

1 голос
/ 04 октября 2011

Отходя от ответа Niklaos, я немного улучшил его, чтобы учесть период и сохранить интервал в визуализированном HTML без изменений.

str.gsub(/(\<p\>|\<br \/\>|[?!.])([\s]*)([[:alpha:]]{1})/) {"#{$1}#{$2}#{$3.capitalize}"}

Редактировать: добавлены знаки пунктуации в одном классе символов, захваченные все между пробелами для сохранения расстояния. Гораздо чище.

0 голосов
/ 04 октября 2011

Хм, я чувствую, что пришло время называть супер Regex :) 1001

str.gsub(/(\<p\>|\<br \/\>|! |\? )(.{1})/) {"#{$1}#{$2.capitalize}"}

Это должно к работе.

Примечание: это может быть улучшено для большей гибкости.

0 голосов
/ 04 октября 2011

использование заглавных букв - это метод, который вы ищете.хотя вы должны сделать это для каждого предложения.Вы можете легко разобрать это с nokogiri, если вам нужно, хотя

...