だから私はルビーでそのx.nilを知っていますか?xがnullかどうかをテストします。
xが''、''(2つのスペース)、または''(3つのスペース)などに等しいかどうかをテストする最も簡単な方法は何ですか?
基本的に、変数がすべて空白であるかどうかをテストするための最良の方法は何でしょうか。
だから私はルビーでそのx.nilを知っていますか?xがnullかどうかをテストします。
xが''、''(2つのスペース)、または''(3つのスペース)などに等しいかどうかをテストする最も簡単な方法は何ですか?
基本的に、変数がすべて空白であるかどうかをテストするための最良の方法は何でしょうか。
Rails を使用している場合は、次のように簡単に使用できます。
x.blank?
これは、x が nil の場合に安全に呼び出すことができ、x が nil またはすべての空白の場合に true を返します。
Rails を使用していない場合は、activesupport
gem から入手できます。でインストールしgem install activesupport
ます。ファイルrequire 'active_support/core_ext
で、基本クラスのすべてのアクティブなサポート拡張機能を取得するかrequire 'active_support/core_ext/string'
、クラスの拡張機能のみを取得しString
ます。いずれにせよ、blank?
メソッドはrequireの後に利用可能になります。
「最良」は文脈によって異なりますが、ここでは簡単な方法を示します。
some_string.strip.empty?
s =~ /\A\s*\Z/
正規表現ソリューション。これが短いルビー正規表現チュートリアルです。
x
がすべて空白の場合x.strip
、は空の文字列になります。だからあなたはすることができます:
if not x.nil? and x.strip.empty? then
puts "It's all whitespace!"
end
または、正規表現を使用すると、がすべて空白文字x =~ /\S/
である場合にのみfalseが返されます。x
if not (x.nil? or x =~ /\S/) then
puts "It's all whitespace!"
end
spaces?
あなたのコメントに基づいて、Stringクラスを拡張し、次のようにメソッドを定義できると思います 。
$ irb
>> s = " "
=> " "
>> s.spaces?
NoMethodError: undefined method `spaces?' for " ":String
from (irb):2
>> class String
>> def spaces?
>> x = self =~ /^\s+$/
>> x == 0
>> end
>> end
=> nil
>> s.spaces?
=> true
>> s = ""
=> ""
>> s.spaces?
=> false
>>
a = " "
a.each_byte do |x|
if x == 32
puts "space"
end
end
さらに別:)string.all? { |c| c == ' ' }