Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is There a Better Way of Checking Nil or Length == 0 of a String in Ruby?

Tags:

ruby

People also ask

Is empty string nil Ruby?

nil? will only return true if the object itself is nil. That means that an empty string is NOT nil and an empty array is NOT nil.

How do you use nil in Ruby?

In Ruby, nil is a special value that denotes the absence of any value. Nil is an object of NilClass. nil is Ruby's way of referring to nothing or void. Ruby also provide a nil?

How do you check if a string is present in Ruby?

Use the [] Syntax to Check Whether a String Contains a Substring in Ruby. For accessing a character in a string at a specific index, we could use the [] syntax. The interesting thing about this syntax is that if we pass in a string, it will return a new string that is matched; otherwise, it will return nil .


When I'm not worried about performance, I'll often use this:

if my_string.to_s == ''
  # It's nil or empty
end

There are various variations, of course...

if my_string.to_s.strip.length == 0
  # It's nil, empty, or just whitespace
end

If you are willing to require ActiveSupport you can just use the #blank? method, which is defined for both NilClass and String.


I like to do this as follows (in a non Rails/ActiveSupport environment):

variable.to_s.empty?

this works because:

nil.to_s == ""
"".to_s == ""

An alternative to jcoby's proposal would be:

class NilClass
  def nil_or_empty?
    true
  end
end

class String
  def nil_or_empty?
    empty?
  end
end

As it was said here before Rails (ActiveSupport) have a handy blank? method and it is implemented like this:

class Object
  def blank?
    respond_to?(:empty?) ? empty? : !self
  end
end

Pretty easy to add to any ruby-based project.

The beauty of this solution is that it works auto-magicaly not only for Strings but also for Arrays and other types.