【问题标题】:Wrapping text into lines at word boundaries在单词边界处将文本换行成行
【发布时间】:2012-10-09 07:07:42
【问题描述】:

1) 我想按单词自动换行,使每行不超过 56 个字符。 有没有办法做到这一点,还是我需要自己动手?

@comment_text = "Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua."

我的看法:

<%= @comment_text.cool_string_function( 56 ) %>

将呈现:

Lorem ipsum dolor sit amet, consectetur adipisicing
elit, sed do eiusmod tempor incididunt ut labore et 
dolore magna aliqua.

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

<%= @comment_text.cool_string_function( {:width => 56, :indent => 4} ) %>

将呈现:

    Lorem ipsum dolor sit amet, consectetur adipisicing
    elit, sed do eiusmod tempor incididunt ut labore et 
    dolore magna aliqua.

【问题讨论】:

    标签: ruby-on-rails ruby string


    【解决方案1】:

    我相信您正在寻找的功能是word_wrap。像这样的东西应该可以工作:

    <%= word_wrap @comment_text, :line_width => 56 %>
    

    您可以将其与gsub 结合使用以获得您想要的缩进:

    <%= word_wrap(@comment_text, :line_width => 52).gsub("\n", "\n    ") %>
    

    但您可能应该将其移至辅助方法中以保持视图清洁。

    【讨论】:

    • 附带说明,这是 ActionView::Helpers::TextHelper 的一部分 -- docs -- 可以(稍加努力)混入非 Rails 项目中如果需要。
    【解决方案2】:

    也许word_wraphelper 可以帮到你。

    要缩进文本,您可以将 \n(换行符)替换为换行符 + 4 个空格。

    【讨论】:

    • +1 感谢您的宝贵时间和回答。这看起来正是我想要的。
    猜你喜欢
    • 2021-12-03
    • 1970-01-01
    • 2021-07-03
    • 1970-01-01
    • 2017-04-27
    • 2015-10-20
    • 1970-01-01
    • 1970-01-01
    • 2013-12-25
    相关资源
    最近更新 更多