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

bod*_*tva 6 ruby user-input input

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

str = gets()
num = gets().to_i
Run Code Online (Sandbox Code Playgroud)

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

str.length

我想要明智地计算它,因为我试图在Ruby中实现自动行,其中说在行宽(这将是用户定义的数字输入)中我想要只打印那些不会持续到下一个的单词line,即我不想在两行上分割连续的单词.这些话应该被带到新的界限.

谢谢你的时间.. !!

bow*_*ior 7

getc 会一次读一个字符:

char = getc()
Run Code Online (Sandbox Code Playgroud)

或者你可以循环遍历字符串中的字符each_char:

'abc'.each_char do |char|
  puts char
end  
Run Code Online (Sandbox Code Playgroud)


the*_*Man 5

您可能想要查看Text :: Format gem.此外,Rails将word_wrap作为ActionView的一部分,如果你正在做web内容,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.
Run Code Online (Sandbox Code Playgroud)