2009-03-12 15 views
27

Jeśli powiemJak dodać nową linię z "puts" bez wtrącania znaku nowej linii do łańcucha?

puts "Hello" 

i zdecydować dodać dodatkowe przełamane muszę to zrobić:

puts "Hello\n" 

Mając ten znak w ciągu jest brzydki. Czy jest jakiś sposób, aby to zrobić bez zanieczyszczania mojego ciągu?

+5

Właściwie, aby dodać extra newline musisz zrobić "puts" Hello \ n \ n ", ponieważ' puts' spożywa pierwszy znak nowej linii. Przypuszczam, że zakłada, że ​​nie zdajesz sobie sprawy, że doda go automatycznie. –

Odpowiedz

37

Wystarczy dokonać innego połączenia do puts:

puts "Hello" 
puts 
+0

Próbowałem innych przykładów bez powodzenia, to działało idealnie. –

+1

Musiałem dodać ciąg po puts: "puts" "' – cyrilchampier

0

Cóż, nie sądzę, wyraźny znak nowej linii jest brzydki. Odpowiedź mipadi też jest w porządku. Aby rzucić kolejną odpowiedź, utwórz tablicę linii, a następnie dołącz do aray za pomocą znaku nowej linii. :)

2

Czy uważasz, że wygląda ładniej?


puts "Hello"+$/ 

</zło >

2

Powodem Ruby używa „\ n” do nowej linii, ponieważ jego podstawie C. Ruby MRI jest napisany w C, a nawet JRuby jest napisany w Javie, która opiera się na C++, który jest oparty na C ... masz pomysł! Zatem wszystkie te języki w stylu C używają "\ n" dla nowej linii.

Zawsze możesz napisać własną metodę, która działa jak puts, ale dodaje nowe linie na podstawie parametru do metody.

20
puts "Hello","" 
+2

Clever, ale utrudnia czytelność. Dodatkowe opcje są znacznie łatwiejsze do zrozumienia. – Dennis

+0

@Dennis Bardzo się nie zgadzam, dodatkowe pytania wyglądają prawie jak błąd. Dzięki temu jest to zdecydowanie dużo czystszy kod. Natychmiast po wprowadzeniu napisu wstawiasz pusty ciąg znaków, który w zamian oznacza powrót karetki. – djowinz

+0

@Djowinz problem z tym podejściem jest to, że nie jest oczywiste, co robi, ponieważ jest rzadko używany. Przeciętny programista Ruby nie wie, że 'puts' akceptuje argument tablicowy i jaki będzie wynik. Ale w każdym języku jest całkiem oczywiste, co zrobi dwa razy wywołując metodę druku idiomatycznego. – Dennis

1

można po prostu napisać

p "Hello" 
p 

który powinien działać jak dobrze, jeśli chcesz zachować go krótka i prosta

+0

'p' nie da znaku nowej linii. Ani 'p" "', jak będzie renderować '" ", ponieważ' p' daje wynik wywołania '.inspect' na łańcuchu, zamiast' .to_s'. Zobacz: http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby – Magne

3

I często znajduję się dodanie stałej w Ruby zawierać następujące znaki

NEW_LINE = "\n" 

puts "Hello" + NEW_LINE 

Myślę, że jest bardziej czytelny i sprawia, że ​​zmiana na wszystkie znaki nowej linii jest prosta kiedykolwiek zdecydujemy się oddzielić każdą linię przez coś innego w jakimś późniejszym terminie.

0

co chcesz naprawiono: wejście do skryptu:

puts "Hello there" 
puts "Goodbye" 

wyjścia ze skryptu:

Hello thereGoodbye 

Fix do problemu: Wejście do skryptu:

puts "Hello there" 
puts 
puts "Goodbye" 

Output od skryptu:

Hello there 
Goodbye 
+0

Powinieneś edytować swoją odpowiedź i ułatwić jej zrozumienie. –

+0

Chyba że coś nie rozumiem, w zasadzie powiedziałeś to samo, co zaakceptowana odpowiedź, opublikowana wiele lat temu. Czy jest coś na temat twojej odpowiedzi, która dodaje się do już istniejącej? – skrrgwasme

-2

Jeden prosty i czytelny podejściem jest użycie cytatów oddzielić odniesienia nowej linii z resztą swojej produkcji, ale utrzymać go na tej samej linii:

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

+1

Ciekawe, dlaczego to się obniża. Być może komentarz z tego powodu? – Toby

Powiązane problemy