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?



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

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.


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) {
  .
  .
  .

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.


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ê.


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;
}

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 :(
}

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;
  }
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.