Ruby:空白? 没有Rails
我想要这个测试:
if (line.blank?) do_stuff
…但我是直的ruby,而不是铁轨。 实现同样效果的公认成语是什么?
我正在为一个字符串做这个,测试.empty? 与测试.blank不一样? (所有空白字符串不为空,但为空。)
来自ActiveSupport
line !~ /[^[:space:]]/
blank?
不仅在String中定义,它也是Nil的一部分,因为它是一个双重测试。 它检查变量是否nil?
还是empty?
/白色空间。
你不能问一个字符串,如果它是零,因为它没有nil?
方法,但如果没有,你可以问一个nil?
。
Active Support提供了核心扩展,让我们可以挑选所需的function并包含必要的方法。 blank?
你可以做:
require 'active_support/core_ext/object/blank'
看到blank?
有关更多信息,请阅读整个文档以查看其他可用内容。 通过这种方式使用Active Support,无需加载所有AS,即可获得有用的function。
这个有可能:
line.to_s.strip.empty?
blank?
基本上只是检查empty? || nil?
empty? || nil?
。 因此,您可以自己制作空白方法,也可以在条件中检查它们。
if line.empty? || line.nil?
你可以将它包装成空白吗? 您的行类中的方法
添加到@sawa的答案
pry(main)> Benchmark.ips do |x| pry(main)* x.report("strip") { " ".strip.empty? } pry(main)* x.report("regex") { " " !~ /\S/ } pry(main)* x.compare! pry(main)* end Warming up -------------------------------------- strip 199.937ki/100ms regex 120.402ki/100ms Calculating ------------------------------------- strip 4.205M (± 3.6%) i/s - 21.193M in 5.047231s regex 2.019M (± 3.7%) i/s - 10.114M in 5.017202s Comparison: strip: 4204798.7 i/s regex: 2018957.6 i/s - 2.08x slower
所以if line.to_s.strip.empty?
是要走的路