2010-12-16 20 views
5

Estoy tratando de leer datos de un archivo de texto y unirlo a una cadena de publicaciones. Cuando solo hay una línea en el archivo, funciona bien. Pero con 2 líneas, mi solicitud ha fallado. ¿Está cada línea leyendo el salto de línea? ¿Cómo puedo corregirlo?ruby ​​each_line también dice salto de línea?

File.open('sfzh.txt','r'){|f| 
f.each_line{|row| 
    send(row) 
} 

omití este problema con separador de división y extra. Pero solo se ve feo.

Respuesta

26

Sí, each_line incluye saltos de línea. Pero se puede despojarlos fácilmente usando chomp:

File.foreach('test1.rb') do |line| 
    send line.chomp 
end 
+1

+1 para 'foreach', los Mans vagos 'abierta ... each_line'. :-) –

+0

Gracias Mladen, funciona. Y gracias Greg, esa es una lección extra – Wenyang

2

Otra forma es mapear strip en cada línea, ya que se devuelve. Para leer una línea por línea de archivos, despojando espacios en blanco y hacer algo con cada línea que puede hacer lo siguiente:

File.open("path to file").readlines.map(&:strip).each do |line| 
    (do something with line) 
end