2010-12-11 6 views
1

Ich bin ein Ruby Anfänger. Ich habe den folgenden Code, der den Benutzer nach seinem Namen fragt und ihn zurückdruckt.Druckfunktion in Rubin

print 'Enter your name : ' 
name = gets() 
print("Hey,#{name} !") 

Wenn ich John Doe als Namen eingeben, wird der Ausgang als

Hey,John Doe 
! 

print im Gegensatz zu puts folgt nicht automatisch eine neue Zeile nach der Ausgabe gestellt, aber ich habe bemerkt, dass im obigen Fall alles, was ich nach #{name} eintrage, wird auf eine neue Zeile gedruckt. Warum ist das so ?

+2

Hinweis: 'name' enthält ein Zeichen, das Sie eingegeben haben (drücken Sie eine Taste), erwartet aber nicht. –

+0

Oh ja, der Newline Charakter! : D ... danke! :) – James

Antwort

5

gets() gibt den Zeilenumbruch zurück, der durch Drücken der Eingabetaste verursacht wurde. Probieren Sie name = gets().chomp aus, um es zu entfernen.

1

Wenn Sie OS X verwenden und dies in irb ausführen, können Sie auch "John Doe" eingeben und dann zweimal Strg + d drücken.

Ich denke, das Äquivalent für Windows ist Kontrolle + z.

Auch wenn Sie print name.inspect getan haben, dann würden Sie sicher herausfinden, dass name einen Zeilenumbruch enthält - es würde "John Doe\n" ausgedruckt werden.