2010-12-16 10 views
5

Próbuję odczytać dane z pliku tekstowego i połączyć je z ciągiem znaków. Jeśli w pliku znajduje się tylko jedna linia, działa dobrze. Ale z 2 liniami moje żądanie się nie powiodło. Czy each_line czyta podział wiersza? Jak mogę to poprawić?ruby ​​every_line czyta też podział linii?

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

Usunąłem ten problem z ograniczeniem podziału i dodatkowym separatorem. Ale wygląda to po prostu brzydko.

Odpowiedz

26

Tak, each_line zawiera podział na wiersze. Ale można pozbawić je łatwo za pomocą chomp:

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

+1 dla 'foreach', leniwe Mans'' otwarte ... each_line'. :-) –

+0

Dzięki Mladen, to działa. I dzięki Greg, to dodatkowa lekcja – Wenyang

2

Innym sposobem jest mapa strip na każdej linii, jak to jest zwracana. Aby odczytać linię po linii pliku, usuwanie białych znaków i zrobić coś z każdej linii można wykonać następujące czynności:

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