Equivalente em C # String.IsNullOrEmpty Javascript

86

Eu quero tentar fazer uma chamada de string equivalente ao C # String.IsNullOrEmpty(string)em javascript. Procurei online presumindo que havia uma ligação simples a ser feita, mas não consegui encontrar uma.

Por enquanto, estou usando uma if(string === "" || string === null)declaração para cobri-lo, mas prefiro usar um método predefinido (continuo recebendo alguns casos que escapam por algum motivo)

Qual é a chamada javascript (ou jquery se houver) mais próxima que seria igual?

Stanley Cup Phil
fonte
3
@ DanielA.White o argumento é o mesmo, mas, para um desenvolvedor C # como eu, esta questão (com o título) é mais provável de ser encontrada
Daniele Armanasco

Respostas:

211

Você está pensando demais. Cadeias de caracteres nulas e vazias são valores falsey em JavaScript.

if(!theString) {
 alert("the string is null or empty");
}

Falsey:

  • falso
  • nulo
  • Indefinido
  • A string vazia ''
  • O número 0
  • O número NaN
JoJo
fonte
16
Incrível que isso tenha obtido tantos votos. Esta resposta está incorreta. Você mesmo disse que um valor falsey seria 0. Se o usuário digitar 0 em um campo, esta não é uma string vazia. Uma string vazia é literalmente uma string "vazia".
KingOfHypocrites
3
Se o usuário digitar 0, o valor será a string "0" e não o número 0. Portanto, ainda será verdade, eu acho. Por favor, poste sua melhor solução, KingOfHypocrites?
Jonas T
2
KingOfHypocrites está certo ao afirmar que a string "0" dará um resultado incorreto: "0" == false retorna verdadeiro! "0" == false retorna verdadeiro
Martien de Jong
2
Útil. No entanto, conheça seu conjunto de dados. Se "0" ou "falso" forem entradas possíveis, essa solução nem sempre funcionará.
Nevyn
12

Se, por qualquer motivo, você quisesse apenas testar nulle empty, poderia fazer:

function isNullOrEmpty( s ) 
{
    return ( s == null || s === "" );
}

Nota: Isso também pegará undefined como @Raynos mencionado nos comentários.

Code Maverick
fonte
pode ser otimizado parareturn (s == null || s === "")
Raynos
@Raynos - Por que == em vez de === em relação a nulo? E se o objeto passado for indefinido? undefined <> null, certo?
Código Maverick de
s == nullpega ambos nulle undefineddesdenull == undefined
Raynos
@Raynos - Ok, entendi, mas caso você queira realmente saber undefined ou null, você precisaria usar ===, correto?
Código Maverick de
5

Se você sabe que stringnão é numérico, funcionará:

if (!string) {
  .
  .
  .
awm
fonte
A string "0" é falsey, então você não precisa verificar se a string é numérica.
JoJo
1
Sim, a string "0" é verdadeira, mas se a variável não stringfor de fato uma string, mas o número zero, então stringserá falsey. Não será um problema se soubermos que stringé uma string real ou nula.
awm
3

você pode apenas fazer

if(!string)
{
  //...
}

Isso verificará se stringhá strings indefinidas, nulas e vazias.

Vidro quebrado
fonte
1

Para ficar claro, if(!theString){//...}onde theString é uma variável não declarada lançará um erro indefinido, não o encontrará verdadeiro. Por outro lado, se você tiver: if(!window.theString){//...}ou var theString; if(!theString){//...}funcionará conforme o esperado. No caso em que uma variável não pode ser declarada (em oposição a ser uma propriedade ou simplesmente não configurada), você precisa usar:if(typeof theString === 'undefined'){//...}

Minha preferência é criar uma função de protótipo que resolva tudo para você.

Craig
fonte
1

Como a resposta marcada como correta contém um pequeno erro, aqui está minha melhor tentativa de encontrar uma solução. Eu tenho duas opções, uma que leva uma string, a outra leva uma string ou um número, já que presumo que muitas pessoas estão misturando strings e números em javascript.

Passos: -Se o objeto for nulo, é uma string nula ou vazia. -Se o tipo não for string (ou número), o valor da string será nulo ou vazio. NOTA: podemos lançar uma exceção aqui também, dependendo das preferências. -Se o valor da string aparada tiver um comprimento menor que 1, ele será nulo ou vazio.

var stringIsNullOrEmpty = function(theString)
{
    return theString == null || typeof theString != "string" || theString.trim().length < 1;
}

var stringableIsNullOrEmpty = function(theString)
{
    if(theString == null) return true;
    var type = typeof theString;
    if(type != "string" && type != "number") return true;
    return theString.toString().trim().length < 1;
}
Martien de Jong
fonte
1

você pode dizer isso pela lógica

Digamos que você tenha um nome de variável strVal, para verificar se é nulo ou vazio

if (typeof (strVal) == 'string' && strVal.length > 0) 
{
// is has a value and it is not null  :)
}
else
{
//it is null or empty :(
}
Ahmad Hindash
fonte
1

Você pode criar um método utilitário que pode ser reutilizado em muitos lugares, como:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Anjum ....
fonte