私はこのテストをしたい:
if (line.blank?) do_stuff
...しかし、私はレールではなく、まっすぐなルビーにいます。同じ効果を達成するために受け入れられているイディオムは何ですか?
私は文字列に対してこれを行っています.emptyのテストはどこですか? .blank のテストと同じではありませんか? (すべて空白の文字列は空ではありませんが、空白です。)
私はこのテストをしたい:
if (line.blank?) do_stuff
...しかし、私はレールではなく、まっすぐなルビーにいます。同じ効果を達成するために受け入れられているイディオムは何ですか?
私は文字列に対してこれを行っています.emptyのテストはどこですか? .blank のテストと同じではありませんか? (すべて空白の文字列は空ではありませんが、空白です。)
blank?
は String で定義されているだけでなく、2 つのテストであるため Nil の一部でもあります。nil?
変数がまたはempty?
/white space であるかどうかを確認します。
メソッドがないため、文字列が nil かどうかを問い合わせることはできませんがnil?
、Nil が であるかどうかを問い合わせることはできますnil?
。
Active Support には利用可能なコア拡張機能があり、必要な機能を厳選して必要なメソッドを含めることができます。blank?
あなたができることのために:
require 'active_support/core_ext/object/blank'
詳細についてはを参照しblank?
、ドキュメント全体を読んで、他に何が利用できるかを確認してください。この方法で Active Support を使用すると、すべての AS をロードする必要がなくなり、便利な機能を取得できます。
これは可能です:
line.to_s.strip.empty?
line !~ /[^[:space:]]/
@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.937k i/100ms
regex 120.402k i/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?
行く道もそうです
blank?
基本的にはチェックするだけempty? || nil?
です。したがって、空のメソッドを自分で作成するか、条件で両方をチェックすることができます。
if line.empty? || line.nil?
空欄で包めますか?あなたのラインクラスのメソッド