I have a string in Ruby on which I\'m calling the strip method to remove the leading and trailing whitespace. e.g.
s = \"12345 \"
s.strip
H
I'd opt for a solution where s
can never be nil
to start with.
You can use the ||
operator to pass a default value if some_method
returns a falsy value:
s = some_method || '' # default to an empty string on falsy return value
s.strip
Or if s
is already assigned you can use ||=
which does the same thing:
s ||= '' # set s to an empty string if s is falsy
s.strip
Providing default scenario's for the absence of a parameters or variables is a good way to keep your code clean, because you don't have to mix logic with variable checking.
If you don't mind the extra object being created, either of these work:
"#{s}".strip
s.to_s.strip
Without extra object:
s && s.strip
s.strip if s
I guess the easiest method would be the following:
s.strip if s
If you want to avoid the error that appears in the question:
s.to_s.strip
You can use method try
from ActiveSupport (Rails library)
gem install activesupport
require 'active_support/core_ext/object/try'
s.try(:strip)
or you can use my gem tryit which gives extra facilities:
gem install tryit
s.try { strip }
Simply put:
s = s.nil? ? s : s.strip
Tl;dr Check if s is nil, then return s, otherwise, strip it.