2010-12-23 8 views
6

Sé que esta pregunta es fundamental. Soy capaz de tomar la entrada del usuario para una cadena y un entero usando:Lea una cadena de Ruby de a un carácter por vez (para el ajuste de palabras)

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

Pero quiero leer de la cadena (digamos que es en mi caso más de una línea de longitud) carácter por carácter y el recuento la cantidad de caracteres desde el primero hasta el último para cada personaje encontrado en la cadena. Sé que esto puede lograrse a través de:

str.length

Quiero contarlo carácter sabia como estoy tratando de implementar palabra envolver en Ruby, en el que decir dentro de la anchura de línea (que sería una entrada numérica definida por el usuario) Me gustaría imprimir solo aquellas palabras que no continúan a la siguiente línea, es decir, no quiero dividir una palabra continua en dos líneas. Tales palabras deben tomarse a la nueva línea.

Gracias por su tiempo ... !!

Respuesta

7

getc se lee en un carácter a la vez:

char = getc() 

o puede hacer pasar por los caracteres de la cadena con each_char:

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

Esto responde a lo que se solicitó originalmente en el título de la pregunta, pero no lo era en realidad pidió. – Phrogz

+0

De hecho lo hace. – bowsersenior

+0

¡LOL! Supongo que responder el título fue lo suficientemente bueno para el OP. Me alegra que mi respuesta pueda ser de alguna ayuda. – bowsersenior

5

Es posible que desee revisar la joya Text::Format . Además, Rails tiene word_wrap como parte de ActionView, y Padrino tiene un método similar word_wrap si estás haciendo cosas en la web.

lo demás, es una muestra de linewrap: 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. 
+0

Se atribuye. Ver la URL? –

+0

mi mal ... lo siento :( – Zabba

Cuestiones relacionadas