一次读一个Ruby字符串一个字符(用于自动换行)

时间:2010-12-23 01:26:24

标签: ruby input user-input

我知道这个问题是一个基本问题。我能够使用以下内容获取字符串和整数的用户输入:

str = gets()
num = gets().to_i

但是我希望逐字符地读取字符串(比如我的情况下,这个字符长度超过一行),并计算字符串中遇到的每个字符的第一个字符到最后一个字符的字符数。我知道这可以通过以下方式实现:

  

str.length

我想在Ruby中实现自动换行,因为我想在线宽(这将是用户定义的数字输入)中我想要仅打印那些没有继续到下一行的词,即我不想将连续的词分成两行。这样的话应该被带到新的界限。

谢谢你的时间.. !!

2 个答案:

答案 0 :(得分:7)

getc会一次读取一个字符:

char = getc()

或者您可以使用each_char循环显示字符串中的字符:

'abc'.each_char do |char|
  puts char
end  

答案 1 :(得分:5)

您可能需要查看Text::Format gem。此外,Rails有word_wrap作为ActionView的一部分,而Padrino有一个类似的word_wrap方法,如果你正在做网络的东西。

否则,这是来自:http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-talk/249306

的线绕样本
str = "\
I don't necessarily need code examples -- but if anyone has
ideas for a best approach to specifying a line wrap width
(breaking between words for lines no longer than a specific
column width) for output from a Ruby script, I'd love to
hear about it."

X = 40
puts str.gsub(/\n/," ").scan(/\S.{0,#{X-2}}\S(?=\s|$)|\S+/)


--- output ---
I don't necessarily need code examples
-- but if anyone has ideas for a best
approach to specifying a line wrap width
(breaking between words for lines no
longer than a specific column width) for
output from a Ruby script, I'd love to
hear about it.