Ответ 1
s =~ /^\s*$/
Регрессивное решение. Здесь краткое руководство по рубину ruby .
Знаю ли я в рубине, что x.nil? будет проверяться, если x равно null.
Каков самый простой способ проверить, является ли x равным '', или '' (два пробела), или '' (три пробела) и т.д.
В принципе, мне интересно, какой лучший способ проверить, является ли переменная все пробелы?
s =~ /^\s*$/
Регрессивное решение. Здесь краткое руководство по рубину ruby .
Если вы используете Rails, вы можете просто использовать:
x.blank?
Это безопасно вызывать, когда x равно нулю, и возвращает true, если x равно нулю или все пробелы.
Если вы не используете Rails, вы можете получить его из драгоценного камня activesupport
. Установите с помощью gem install activesupport
. В вашем файле либо require 'active_support/core_ext
, чтобы получить все активные расширения поддержки базовым классам, или require 'active_support/core_ext/string'
, чтобы получить только расширения класса String
. В любом случае метод blank?
будет доступен после запроса.
"best" зависит от контекста, но вот простой способ.
some_string.strip.empty?
Если x
- все пробелы, то x.strip
будет пустой строкой. Итак, вы можете сделать:
if not x.nil? and x.strip.empty? then
puts "It all whitespace!"
end
В качестве альтернативы, используя регулярное выражение, x =~ /\S/
вернет false тогда и только тогда, когда x
- все пробельные символы:
if not (x.nil? or x =~ /\S/) then
puts "It all whitespace!"
end
a = " "
a.each_byte do |x|
if x == 32
puts "space"
end
end
На основе вашего комментария, я думаю, вы можете расширить класс String и определить метод spaces?
следующим образом:
$ 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
>>
Еще один:) string.all? { |c| c == ' ' }