2009-03-12 4 views
27

Wenn ich sageWie fügt man zusätzliche Zeilenumbrüche mit 'puts' hinzu, ohne Zeilenumbrüche in die Zeichenfolge einzufügen?

puts "Hello" 

und entscheiden, ein zusätzliches Newline ich dies tun müssen, um hinzuzufügen:

puts "Hello\n" 

Mit diesen Zeichen in der Zeichenfolge ist hässlich. Gibt es eine Möglichkeit, dies zu tun, ohne meine Saite zu verschmutzen?

+5

Eigentlich, um ein hinzufügen extra newline müssen Sie 'puts" Hallo \ n \ n "tun, da' puts' den ersten Zeilenumbruch isst. Ich nehme an, es geht davon aus, dass Sie nicht erkennen, dass es automatisch einen hinzufügen wird. –

Antwort

37

So stellen Sie einen weiteren Anruf zu puts:

puts "Hello" 
puts 
+0

Ich habe die anderen Beispiele ohne Glück versucht, das hat perfekt funktioniert. –

+1

Ich musste nach den Puts eine Zeichenfolge hinzufügen: 'puts '" ' – cyrilchampier

0

Nun, ich glaube nicht, eine explizite Newline hässlich ist. Mipadis Antwort ist auch in Ordnung. Nur um eine weitere Antwort zu werfen, machen Sie ein Array der Linien und verbinden Sie das Array mit einem Newline. :)

2

Glaubst du, das sieht schöner aus?


puts "Hello"+$/ 

</böse >

2

Der Grund Ruby "\ n" für eine neue Zeile verwendet wird, weil sein basierend auf C. Rubin MRT ist in C geschrieben und sogar ist JRuby in Java geschrieben, die darauf basiert, C++, das auf C basiert ... Sie haben die Idee! Daher verwenden alle diese Sprachen im C-Stil das "\ n" für die neue Zeile.

Sie können immer Ihre eigene Methode schreiben, die sich wie puts verhält, aber neue Zeilen basierend auf einem Parameter zur Methode hinzufügt.

20
puts "Hello","" 
+2

Clever, aber behindert die Lesbarkeit. Die zusätzlichen Puts sind viel einfacher zu verstehen. – Dennis

+0

@Dennis Ich stimme überhaupt nicht zu, das Extra puts sieht fast wie ein Fehler aus. Damit ist es wohl viel sauberer Code. Unmittelbar nach dem Setzen der Zeichenkette setzen Sie eine leere Zeichenkette, die wiederum ein Wagenrücklauf ist. – djowinz

+0

@djowinz das Problem mit diesem Ansatz ist, dass es nicht offensichtlich ist, was es tut, da es selten verwendet wird. Der durchschnittliche Ruby-Programmierer weiß nicht, dass 'puts' ein Array-Argument akzeptiert und was das Ergebnis sein wird. Aber in jeder Sprache ist es ziemlich offensichtlich, was es bedeutet, die idiomatische Druckmethode zweimal aufzurufen. – Dennis

1

Sie können einfach schreiben

p "Hello" 
p 

das auch sollte funktionieren, wenn Sie es kurz und einfach

+0

'p' gibt keinen Zeilenumbruch. Weder wird 'p" "', weil es ''' '' ergibt, weil 'p' das Ergebnis des Aufrufs von' .inspect' in der Zeichenkette anstelle von '.to_s' ergibt. Siehe: http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby – Magne

3

ich oft halten wollen mich in rubin eine konstante Zugabe dieser Zeichen enthalten

Ich denke, es ist lesbarer und macht eine Änderung an allen Newline-Zeichen leicht, wenn überhaupt man entscheidet sich, jede Zeile zu einem späteren Zeitpunkt durch etwas anderes zu trennen.

0

Was Sie wollen, festgelegt: Eingang für Skript:

puts "Hello there" 
puts "Goodbye" 

Ausgabe von Skript:

Hello thereGoodbye 

Fix für das Problem: Eingang für Skript:

puts "Hello there" 
puts 
puts "Goodbye" 

Ausgang aus dem Skript:

Hello there 
Goodbye 
+0

Sie sollten Ihre Antwort bearbeiten und es leichter verständlich machen. –

+0

Sofern ich etwas nicht falsch verstehe, haben Sie im Grunde dasselbe gesagt wie die angenommene Antwort, die vor Jahren gepostet wurde. Gibt es etwas über deine Antwort, die zu der bestehenden hinzugefügt wird? – skrrgwasme

-2

Eine einfache und lesbare Ansatz ist Anführungszeichen zu verwenden, um die Newline-Referenz aus dem Rest Ihrer Ausgabe zu trennen, aber es auf der gleichen Linie zu halten:

puts "Add an extra newline" "\n\n"

+1

Neugierig, warum das Stimmen runterzieht. Vielleicht ein Kommentar mit warum? – Toby