Есть ли лучший способ, чем следующий, чтобы проверить, является ли строка нулевой ИЛИ имеет длину 0 в Ruby?
if !my_string || my_string.length == 0
return true
else
return false
end
В C # есть удобный
string.IsNullOrEmpty(myString)
Что-нибудь похожее на это в Ruby?
my_string || my_string.length == 0
поднимет,NoMethodError
еслиmy_string
ноль. Я думаю, что вы имели в виду:my_string.nil? || my_string.length == 0
!my_string || my_string.length == 0
Ответы:
Когда я не беспокоюсь о производительности, я часто использую это:
Конечно, есть разные варианты ...
источник
strip
может быть весьма неэффективным.Если вы хотите использовать ActiveSupport, вы можете просто использовать
#blank?
метод, который определен как для NilClass, так и для String.источник
Мне нравится делать это следующим образом (в среде без Rails / ActiveSupport):
это работает потому что:
источник
string.to_s.empty?
работает как для, такnil
и для""
.Альтернативой предложению jcoby будет:
источник
Как было сказано здесь до того, как у Rails (ActiveSupport) есть удобный бланк? метод, и это реализовано так:
Довольно легко добавить в любой проект на основе ruby.
Прелесть этого решения в том, что оно автоматически работает не только для строк, но и для массивов и других типов.
источник
variable.blank? сделаю это. Он возвращает true, если строка пуста или если строка равна nil.
источник
nil?
может быть опущено в логических контекстах. Как правило, вы можете использовать это для репликации кода C #:источник
Прежде всего, остерегайтесь этого метода:
Как говорит Джесси Эзель :
И если вы исправите класс String ... убедитесь, что NilClass также не был исправлен !
источник
У каждого класса есть
nil?
метод:И строки имеют
empty?
метод:Помните, что строка не равна,
nil
когда она пуста, поэтому используйтеempty?
метод, чтобы проверить, является ли строка пустой.источник
Другой вариант - конвертировать ноль в пустой результат на лету:
(my_string||'').empty?
источник
Конрад Рудольф имеет правильный ответ.
Если это действительно вас не устраивает, обезьяна исправит класс String или добавит его в класс / модуль по вашему выбору. Это действительно не очень хорошая практика, чтобы обезопасить основные объекты, если у вас нет действительно веской причины.
Тогда вы можете сделать
String.nilorempty? mystring
источник
Проверьте наличие пустых строк в обычном Ruby, избегая исключений NameError
Здесь есть несколько хороших ответов, но вам не нужно ActiveSupport или monkey-patching для решения общего случая использования. Например:
Это «сделает правильно», если my_string равно nil или пустой строке, но не вызовет исключение NameError, если my_string не определено. Это обычно предпочтительнее, чем более надуманным:
или более многословный, потому что исключения должны быть действительно сохранены для вещей, которых вы не ожидаете. В этом случае, хотя это может быть распространенной ошибкой, неопределенная переменная на самом деле не является исключительным обстоятельством, поэтому она должна обрабатываться соответствующим образом.
Ваш пробег может варьироваться.
источник
Вы пробовали уточнения?
источник
Если вы используете рельсы, вы можете использовать
#present?
Итак, наоборот, чтобы проверить для использования нулевой или нулевой длины
!present?
источник
В рельсах вы можете попробовать
#blank?
.Предупреждение: это даст вам положительные результаты, когда строка состоит из пробелов:
Просто хотел указать на это. Может быть, это соответствует вашим потребностям
UPD. почему я получаю старые вопросы в своем фиде? Извините за некропостинг.
источник
Для игроков в гольф код:
Или, если вы не игрок в гольф (требуется ruby 2.3 или более поздняя версия):
источник