Таким образом, я знаю в рубине это x.nil? протестирует, если x будет пустым.
Что состоит в том, чтобы протестировать самый простой путь, если x равняется '', или '' (два пробелов), или '' (три пробелов), и т.д.?
В основном я задаюсь вопросом, что лучший способ протестировать, если переменная является всем пробелом?
s =~ /\A\s*\Z/
Решение для регулярных выражений. Вот краткое руководство по регулярному выражению ruby .
Если вы используете Rails, вы можете просто использовать:
x.blank?
Это безопасно для вызова, когда x равно нулю, и возвращает истину, если x равен нулю или все пробелы.
Если вы не используете Rails, вы можете получить его из гема activesupport
. Установите с помощью gem install activesupport
. В вашем файле либо требует 'active_support / core_ext
, чтобы получить все активные расширения поддержки базовых классов, либо требовать' active_support / core_ext / string '
, чтобы получить только расширения для ] String
класс. В любом случае метод blank?
будет доступен после запроса.
«Лучшее» зависит от контекста, но вот простой способ.
some_string.strip.empty?
Если 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
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
>>