2012-10-08 55 views
0

可能重复:
Wrapping text into lines at word boundaries分手一个字符串n每30个字符

我需要从一个用户需要一个文本输入,并把它分解成多行每三字符。困难的部分是我还需要确保换行符出现在“”(空格)处,以便不分解单词。

我在试图算出这个最初的尝试是这样的:

if @square.text.length > 30 
    text = @square.text[0, 31] + "\n" + @square.text[31, @square.text.length] 
else 
    text = @square.text 
end 

而且,我知道上面只处理需要进行一次破碎的字符串。我需要最多六个换行符。

任何想法如何去做到这一点?

+1

你不能总是通过的话正好每三十个字符打破。我认为你的意思是打破最多三十个字符。另外,如果有超过30个字符的字,并且没有办法打破,你想要发生什么?还有一点不清楚的是,当你在一个空间中休息时,你是否想用该空间开始下一行或删除它(用新行代替)?还有一点是:“@ square”是什么?不要使用没有解释的变量。或者,简化它以适应问题的格式。 – sawa

+0

快速浏览http://stackoverflow.com/questions/754407/what-is-the-best-way-to-chop-a-string-into-chunks-of-a-given-length-in-ruby – rjz

回答

2

使用word_wrap从文本助手:

include ActionView::Helpers::TextHelper 
# or, if you are in a controller 
# helper :text 

word_wrap(@square.text, :line_width => 30) 
+0

非常感谢 – Deekor

相关问题