Ruby:如何检查字符串是否为空?

时间:2016-10-15 14:06:47

标签: ruby string

在我的应用程序中,我想阻止变量为空 - 例如,用户的名称应该是空格和其他空格以外的其他内容。它会像这样工作:

foobar = gets.strip
arr = []
if # the string in the variable 'foobar' isn't blank
    arr.push(foobar)
end

Rails将blank?方法添加到课程String,以便"".blank?" ".blank?nil.blank?全部为true。 Ruby有类似的empty?方法,但它与blank?不同,正如我们在下面的示例中看到的那样(这在普通irb中不起作用):

>> "      ".empty?
=> false
>> "      ".blank?
=> true

我们看到一串空格不是空的,但它是空白的。

您的解决方案?

P.S。我将在纯Ruby中执行此操作,而不是在Rails中执行此操作。

4 个答案:

答案 0 :(得分:3)

如果你想要像rails一样的东西,你需要activesupport。或者,如果事情变得更简单,你可以做到

class String
  BLANK_RE = /\A[[:space:]]*\z/

  def blank?
    BLANK_RE.match?(self)
  end
end

正则表达式取自rails。

答案 1 :(得分:2)

除了Gopal's answer

在检查空。之前我也会使用String.strip。

ClassC

答案 2 :(得分:1)

更好地打开预定义的String类并实现该方法

class String
  def blank?
    if strip.empty?
      return true
    end
  end
end

还有NilClass

class NilClass
  def blank?
    return true
  end
end

现在你可以使用空白吗?函数在你的代码中。

答案 3 :(得分:0)

那么,您可以简单地对该特定列使用ActiveRecord验证(如果我们正在讨论模型的验证):

validates :name, presence: true

在model- user.rb文件中。

如果您希望覆盖/更改String类,上面的答案很棒。 但是让我们来看看这些案例的规范:

对于STRING,

.empty?:如果str的长度为零,则返回true。

.blank?对于OBJECT:如果对象为false,为空或空白字符串,则该对象为空。例如,false,'',' ',nil,[]和{}都是空白的。

写在API