How to use grep instead of the select and map methods
This section will teach you how to use grep
instead of other methods in Ruby, such as select
and map
, to search through a collection.
To start with, I'm going to create an array of filenames, as shown in the following code:
arr = ['hey.rb', 'there.rb', 'index.html']
Now let's see how we can use grep
to perform the functions of select
or map
.
First, let's say you want to return only the files that end in the extension .rb
, and along with it, you want to remove the extension so the output has only filenames.
The typical code to implement this type of behavior would be something like this:
p arr.select { |x| x=~ /\.rb/ }.map{ |x| x[0..-4]}
The output should just have the ["hey", "there"]
values.
Though it worked, we can make it more efficient using the grep
method. By leveraging grep
, our code can be consolidated down to:
arr.grep(/(.*)\.rb/){$1}
The output will be the same.
Note
The {$1}
expression is a tool that you can use with regular expression...