How can I chomp every line in an array at once?

9.1k Views Asked by At

In the interest of writing cleaner code...

IO.popen("Generate a list of files").readlines.each{ |line|
   chomped_line = line.chomp
   # ...
}
4

There are 4 best solutions below

0
On BEST ANSWER
IO.popen("Generate a list of files").readlines.map(&:chomp)
1
On
IO.read("something").split($/)

$/ is the separator string. IO.read closes the file after reading.

0
On
# 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}}
0
On

I would make it faster and consuming less memory:

  1. use "each_line" rather than "readlines.each". Why read the whole output at once?
  2. use "chomp!" (exclamation mark) to change the string in-place.

Then it is:

IO.popen( "generate_lines").each_line { |line|
    line.chomp!
    do_something_with line
}