将文本包装到字边界处的行中

Dou*_*ner 12 ruby string ruby-on-rails

1)我想通过单词自动换行文本,这样每行不超过56个字符.有没有这样做的方法,还是我需要自己滚动?

@comment_text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."
Run Code Online (Sandbox Code Playgroud)

我的看法:

<%= @comment_text.cool_string_function( 56 ) %>
Run Code Online (Sandbox Code Playgroud)

会呈现:

Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et 
dolore magna aliqua.
Run Code Online (Sandbox Code Playgroud)

2)我想将文本缩进4个空格,以便:

<%= @comment_text.cool_string_function( {:width => 56, :indent => 4} ) %>
Run Code Online (Sandbox Code Playgroud)

会呈现:

    Lorem ipsum dolor sit amet, consectetur adipisicing
    elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua.
Run Code Online (Sandbox Code Playgroud)

jer*_*nto 19

我相信你正在寻找的功能是word_wrap.这样的事情应该有效:

<%= word_wrap @comment_text, :line_width => 56 %>
Run Code Online (Sandbox Code Playgroud)

你可以结合使用它gsub来获得你想要的缩进:

<%= word_wrap(@comment_text, :line_width => 52).gsub("\n", "\n    ") %>
Run Code Online (Sandbox Code Playgroud)

但是你应该把它转移到一个帮助方法来保持你的视图干净.


Sim*_*tti 9

也许word_wrap助手可以帮助你.

要缩进文本,您可以\n使用换行符+换行符替换(换行符).