【发布时间】:2012-09-07 16:11:19
【问题描述】:
我在 Ruby 中有一个字符串,我在其上调用 strip 方法来删除前导和尾随空格。例如
s = "12345 "
s.strip
但是,如果字符串是 empty nil 我会收到以下错误。
NoMethodError: undefined method `strip' for nil:NilClass
我使用的是 Ruby 1.9,那么在调用 strip 方法之前检查值是否为 nil 的最简单方法是什么?
更新:
我在数组中的一个元素上试过这个,但遇到了同样的问题:
data[2][1][6].nil? ? data[2][1][6] : data[2][1][6].split(":")[1].strip
【问题讨论】:
-
这个问题已经被问了几十次了:stackoverflow.com/questions/5429790/…
-
原始发帖人注意:字符串不是您声称的空的,即
s = "",它是零。它还不存在。如果它是空的,你可以检查:s.strip unless s.empty? -
如果字符串为空,则不会出现该错误。
-
第二个问题,添加
dig:data.dig(2, 1, 6)&.split(":")[1]&.strip。如果数据的任何部分丢失或格式错误,则整个表达式将返回nil而不会出错。