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

Таким образом, я знаю в рубине это x.nil? протестирует, если x будет пустым.

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

В основном я задаюсь вопросом, что лучший способ протестировать, если переменная является всем пробелом?

17
задан user301752 25 March 2010 в 18:42
поделиться

7 ответов

s =~ /\A\s*\Z/

Решение для регулярных выражений. Вот краткое руководство по регулярному выражению ruby ​​.

16
ответ дан 30 November 2019 в 10:04
поделиться

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

x.blank?

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

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

31
ответ дан 30 November 2019 в 10:04
поделиться

«Лучшее» зависит от контекста, но вот простой способ.

some_string.strip.empty?
23
ответ дан 30 November 2019 в 10:04
поделиться

Если 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
6
ответ дан 30 November 2019 в 10:04
поделиться
a = "  " 

a.each_byte do |x|
  if x == 32
    puts "space"
  end
end
0
ответ дан 30 November 2019 в 10:04
поделиться

Основываясь на вашем комментарии, я думаю, что вы можете расширить класс 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
>> 
0
ответ дан 30 November 2019 в 10:04
поделиться

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

0
ответ дан 30 November 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: