Existe uma maneira melhor do que a seguinte para verificar se uma string é nula OU tem um comprimento de 0 em Ruby?
if !my_string || my_string.length == 0
return true
else
return false
end
Em C # há a mão
string.IsNullOrEmpty(myString)
Algo semelhante ao de Ruby?
my_string || my_string.length == 0
aumentará umNoMethodError
semy_string
for nulo. Eu acho que você quis dizer:my_string.nil? || my_string.length == 0
!my_string || my_string.length == 0
Respostas:
Quando não estou preocupado com o desempenho, usarei frequentemente isso:
Existem várias variações, é claro ...
fonte
strip
pode ser bastante ineficiente.Se você deseja solicitar o ActiveSupport, basta usar o
#blank?
método definido para NilClass e String.fonte
Eu gosto de fazer o seguinte (em um ambiente que não seja Rails / ActiveSupport):
isso funciona porque:
fonte
string.to_s.empty?
funciona para ambosnil
e""
.Uma alternativa à proposta do jcoby seria:
fonte
Como foi dito aqui antes do Rails (ActiveSupport) ter um espaço em branco útil ? método e é implementado assim:
Muito fácil de adicionar a qualquer projeto baseado em rubi.
A vantagem dessa solução é que ela funciona automaticamente, não apenas para Strings, mas também para matrizes e outros tipos.
fonte
variable.blank? vai fazer isso. Retorna true se a string estiver vazia ou se a string for nula.
fonte
nil?
pode ser omitido em contextos booleanos. Geralmente, você pode usar isso para replicar o código C #:fonte
Primeiro de tudo, cuidado com esse método:
Como Jesse Ezel diz:
E se você aplicar patch à classe String ... verifique se o NilClass também não foi corrigido !
fonte
Toda classe tem um
nil?
método:E as cordas têm o
empty?
método:Lembre-se de que uma string não é igual
nil
quando está vazia; portanto, use oempty?
método para verificar se uma string está vazia.fonte
Outra opção é converter nada em um resultado vazio em tempo real:
(my_string||'').empty?
fonte
Konrad Rudolph tem a resposta certa.
Se isso realmente o incomoda, faça um patch para a classe String ou adicione-a a uma classe / módulo de sua escolha. Realmente não é uma boa prática usar objetos principais do patch, a menos que você tenha uma razão realmente convincente.
Então você pode fazer
String.nilorempty? mystring
fonte
Verifique se há cadeias vazias no Ruby comum, evitando exceções de NameError
Há algumas boas respostas aqui, mas você não precisa do ActiveSupport ou do patch de macacos para resolver o caso de uso comum aqui. Por exemplo:
Isso "fará a coisa certa" se my_string for nulo ou uma string vazia, mas não gerará uma exceção NameError se my_string não estiver definido. Isso geralmente é preferível ao mais artificial:
ou é mais detalhado, porque as exceções devem ser realmente salvas para coisas que você não espera que aconteçam. Nesse caso, embora possa ser um erro comum, uma variável indefinida não é realmente uma circunstância excepcional, portanto deve ser tratada de acordo.
Sua milhagem pode variar.
fonte
Você já experimentou refinamentos?
fonte
Se você estiver usando trilhos, você pode usar
#present?
Por isso, verifique inversamente o uso de comprimento nulo ou zero
!present?
fonte
Nos trilhos você pode tentar
#blank?
.Atenção: ele fornecerá pontos positivos quando a string for composta por espaços:
Só queria salientar. Talvez atenda às suas necessidades
UPD. por que estou recebendo perguntas antigas no meu feed? Desculpe pelo necroposting.
fonte
Para jogadores de código:
Ou se você não é um jogador de golfe (requer ruby 2.3 ou posterior):
fonte