Подтвердить что ты не робот

Самый простой способ проверить наличие пробелов в рубине

Знаю ли я в рубине, что x.nil? будет проверяться, если x равно null.

Каков самый простой способ проверить, является ли x равным '', или '' (два пробела), или '' (три пробела) и т.д.

В принципе, мне интересно, какой лучший способ проверить, является ли переменная все пробелы?

4b9b3361

Ответ 2

Если вы используете Rails, вы можете просто использовать:

x.blank?

Это безопасно вызывать, когда x равно нулю, и возвращает true, если x равно нулю или все пробелы.

Если вы не используете Rails, вы можете получить его из драгоценного камня activesupport. Установите с помощью gem install activesupport. В вашем файле либо require 'active_support/core_ext, чтобы получить все активные расширения поддержки базовым классам, или require 'active_support/core_ext/string', чтобы получить только расширения класса String. В любом случае метод blank? будет доступен после запроса.

Ответ 3

"best" зависит от контекста, но вот простой способ.

some_string.strip.empty?

Ответ 4

Если 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

Ответ 5

a = "  " 

a.each_byte do |x|
  if x == 32
    puts "space"
  end
end

Ответ 6

На основе вашего комментария, я думаю, вы можете расширить класс 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
>> 

Ответ 7

Еще один:) string.all? { |c| c == ' ' }