2010-12-23 2 views
6

Ich weiß, dass diese Frage eine grundlegende ist. Ich bin in der Lage mit Hilfe von Benutzereingaben für einen String und für eine ganze Zahl zu nehmen:Lesen Sie eine Ruby-Zeichenfolge ein Zeichen nach dem anderen (für Word-Wrapping)

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

Aber ich will aus dem String lesen (sagen sie, das ist in meinem Fall mehr als eine Linie in der Länge) Zeichen für Zeichen und Zählung die Anzahl der Zeichen von der ersten bis zur letzten für jedes Zeichen in der Zeichenfolge. Ich weiß, das durch erreicht werden kann:

str.length

Ich mag es zählen Charakter weise wie ich versuche Wort wickelt in Ruby zu implementieren, wobei in der Linienbreite sagen (Das wäre eine benutzerdefinierte Zahleneingabe. Ich möchte nur die Wörter drucken, die nicht zur nächsten Zeile weitergehen, dh ich möchte kein kontinuierliches Wort über zwei Zeilen teilen. Solche Wörter sollten in die neue Zeile übernommen werden.

Vielen Dank für Ihre Zeit .. !!

Antwort

7

getc wird zu einem Zeitpunkt in einem Charakter lesen:

char = getc() 

Oder können Sie durch die Zeichen in der Zeichenfolge mit each_char:

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

Dies beantwortet, was ursprünglich in dem Titel der Frage gestellt, aber nicht das, was wurde tatsächlich gefragt. – Phrogz

+0

Tatsächlich tut es das. – bowsersenior

+0

LOL! Ich denke, die Antwort auf den Titel war gut genug für das OP. Froh meine Antwort könnte eine Hilfe sein. – bowsersenior

5

Sie könnten die Text::Format gem prüfen wollen, . Auch hat Rails word_wrap als Teil von ActionView, und Padrino hat eine ähnliche word_wrap-Methode, wenn Sie Web-Sachen machen.

Ansonsten ist dies eine linewrap Probe aus: 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

Es wird zugeschrieben. Siehe die URL? –

+0

mein schlechtes ... sorry :( – Zabba

Verwandte Themen