我在Ruby中有一个字符串,我正在调用strip方法来删除前导和尾随空格.例如
s = "12345 "
s.strip
Run Code Online (Sandbox Code Playgroud)
但是,如果字符串为空,我会收到以下错误.
NoMethodError:nil的未定义方法`strip':NilClass
我正在使用Ruby 1.9,那么在调用strip方法之前,最简单的方法是检查值是否为nil?
更新:
我在数组中的元素上尝试了这个但是遇到了同样的问题:
data[2][1][6].nil? ? data[2][1][6] : data[2][1][6].split(":")[1].strip
Run Code Online (Sandbox Code Playgroud)
use*_*951 82
Ruby 2.3.0添加了一个安全的导航操作符(&.),它在调用方法之前检查nil.
s&.strip
Run Code Online (Sandbox Code Playgroud)
nil如果s是nil,它将返回,而不是提高NoMethodError.
meg*_*gas 15
您可以使用tryActiveSupport中的方法(Rails库)
gem install activesupport
require 'active_support/core_ext/object/try'
s.try(:strip)
Run Code Online (Sandbox Code Playgroud)
或者您可以使用我的gem tryit,它提供额外的设施:
gem install tryit
s.try { strip }
Run Code Online (Sandbox Code Playgroud)
Mic*_*ohl 10
如果您不介意创建额外的对象,则可以使用以下任一方法:
"#{s}".strip
s.to_s.strip
Run Code Online (Sandbox Code Playgroud)
没有额外的对象:
s && s.strip
s.strip if s
Run Code Online (Sandbox Code Playgroud)
简单的说:
s = s.nil? ? s : s.strip
Run Code Online (Sandbox Code Playgroud)
Tl;dr 检查 s 是否为零,然后返回 s,否则剥离它。
| 归档时间: |
|
| 查看次数: |
29840 次 |
| 最近记录: |