2010-09-20 26 views

Trả lời

21
IO.popen("Generate a list of files").readlines.map(&:chomp) 
3
IO.read("something").split($/) 

$/là chuỗi phân cách. IO.read đóng tệp sau khi đọc.

+0

Chỉ cần một lưu ý rằng '$ /' trận '\ n' dòng mới đúng khi chomp xử lý' \ r \ n' là tốt. Nếu bạn biết rằng bạn sẽ chỉ có '\ n' dòng mới, giải pháp này là _much_ nhanh hơn tùy chọn map/chomp. –

0

tôi sẽ làm cho nó nhanh hơn và tiêu thụ ít bộ nhớ:

  1. sử dụng "each_line" hơn là "readlines.each". Tại sao đọc toàn bộ đầu ra cùng một lúc?
  2. sử dụng "chomp!" (dấu chấm than) để thay đổi chuỗi tại chỗ.

Sau đó, nó là:

IO.popen("generate_lines").each_line { |line| 
    line.chomp! 
    do_something_with line 
} 
2
# Example 1 
File.readlines("file.txt").each{|line| line.chomp!} 

# Example 2 
File.readlines("file.txt").map(&:chomp) 

# Example 3 
File.open("file.txt", "r"){|file| file.readlines.collect{|line| line.chomp}} 
Các vấn đề liên quan