2009-03-12 18 views
27

Si digo¿Cómo agregar una nueva línea extra con 'puts' sin pegar el carácter de nueva línea en una cadena?

puts "Hello" 

y decide agregar un salto de línea extra que necesito hacer esto:

puts "Hello\n" 

Tener este carácter de la cadena es feo. ¿Hay alguna forma de hacer esto sin contaminar mi cadena?

+5

En realidad, con el fin de añadir una línea adicional que debe hacer 'puts" Hello \ n \ n "ya que' puts' se come la primera línea nueva. Supongo que asume que no te das cuenta de que agregará automáticamente uno. –

Respuesta

37

apenas hacer otra llamada a puts:

puts "Hello" 
puts 
+0

Probé los otros ejemplos sin suerte, esto funcionó a la perfección. –

+1

Necesitaba agregar una cadena después de las puts: 'puts" "' – cyrilchampier

0

Bueno, no creo que una nueva línea explícito es feo. La respuesta de mipadi también está bien. Solo para arrojar otra respuesta, haga una selección de líneas y luego únase al aray con una nueva línea. :)

2

¿Crees que esto se ve mejor?


puts "Hello"+$/ 

</mal >

2

La razón de Ruby utiliza "\ n" para una nueva línea es porque su basan en C. Rubí MRI está escrito en C e incluso JRuby está escrito en Java que se basa en C++ que se basa en C ... ¡entiendes! Entonces todos estos lenguajes estilo C usan la "\ n" para la nueva línea.

Siempre puede escribir su propio método que actúa como puts pero agrega nuevas líneas basadas en un parámetro para el método.

20
puts "Hello","" 
+2

Inteligente, pero dificulta la legibilidad. Las puts adicionales son mucho más fáciles de entender. – Dennis

+0

@Dennis Estoy muy en desacuerdo, el extra pone casi parece un error. Con esto, podría decirse que es un código mucho más limpio. Inmediatamente después de poner la cuerda, está colocando una cadena vacía que a cambio es un retorno de carro. – djowinz

+0

@djowinz el problema con este enfoque es que no es obvio lo que está haciendo, ya que rara vez se usa. El programador de Ruby promedio no sabe que 'puts' acepta un argumento de matriz y cuál será el resultado. Pero en cualquier idioma, es bastante obvio lo que el llamado al método de impresión idiomática dos veces servirá. – Dennis

1

sólo puede escribir

p "Hello" 
p 

que debería funcionar, así que si quieres que sea breve y sencilla

+0

'p' no dará una nueva línea. Ninguno de ellos 'p" "', ya que representará '" "' porque 'p' da el resultado de llamar a' .inspect' en la cadena, en lugar de '.to_s'. Consulte: http://stackoverflow.com/questions/1255324/p-vs-puts-in-ruby – Magne

3

menudo me encuentro añadiendo una constante en rubí para contener estos caracteres

NEW_LINE = "\n" 

puts "Hello" + NEW_LINE 

Creo que es más fácil de leer y hace un cambio en todos los caracteres de nueva línea, si es que hay alguno uno decide alguna vez separar cada línea por otra cosa en una fecha posterior.

0

lo que quieres fijo: de entrada para el script:

puts "Hello there" 
puts "Goodbye" 

salida del script:

Hello thereGoodbye 

Arreglo para el problema: de entrada para el script:

puts "Hello there" 
puts 
puts "Goodbye" 

salida del guión:

Hello there 
Goodbye 
+0

Debe editar su respuesta y hacerla más fácil de entender. –

+0

A menos que esté malinterpretando algo, básicamente ha dicho lo mismo que la respuesta aceptada que se publicó hace años. ¿Hay algo en tu respuesta que se agregue a la existente? – skrrgwasme

-2

Una simple y enfoque legible es utilizar comillas para separar la referencia de nueva línea del resto de su salida, pero mantenerlo en la misma línea:

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

+1

Curioso por qué esto está recibiendo votos. Tal vez un comentario con por qué? – Toby

Cuestiones relacionadas