How to Remove Empty Strings From a Ruby Array?

In Ruby, you can remove all empty strings ("") and return a new array by using the Array#reject method, for example, like so:

strings = ["", "foo", "", "bar", "baz", ""]
without_empty_strings = strings.reject { | str | str.empty? }

print without_empty_strings #=> ["foo", "bar", "baz"]
print strings #=> ["", "foo", "", "bar", "baz", ""]

As you can see in the example above, this will return a new array with all the values from the original array, except empty strings (if any).

If you want to mutate the original array instead, then you can simply use Array#reject! (instead of Array#reject). For example:

strings = ["", "foo", "", "bar", "baz", ""]
strings.reject! { | str | str.empty? }

print strings #=> ["foo", "bar", "baz"]

You can also shorten either of these, by using the &: syntax. For example, you can shorten the code using the Array#reject method in the following way:

strings = ["", "foo", "", "bar", "baz", ""]
without_empty_strings = strings.reject(&:empty?)

print without_empty_strings #=> ["foo", "bar", "baz"]
print strings #=> ["", "foo", "", "bar", "baz", ""]

This will return a new array with all the empty strings removed. Similarly, you can shorten the Array#reject! method like so:

strings = ["", "foo", "", "bar", "baz", ""]
strings.reject!(&:empty?)

print strings #=> ["foo", "bar", "baz"]

This will mutate the original array, removing all empty strings from it.


This post was published by Daniyal Hamid. Daniyal currently works as the Head of Engineering in Germany and has 20+ years of experience in software engineering, design and marketing. Please show your love and support by sharing this post.