Equivalente JavaScript di C # String.IsNullOrEmpty


86

Voglio provare a fare una chiamata di stringa equivalente al C # String.IsNullOrEmpty(string)in javascript. Ho cercato online presumendo che ci fosse una semplice chiamata da fare, ma non sono riuscito a trovarne una.

Per ora sto usando if(string === "" || string === null)un'istruzione per coprirlo, ma preferirei usare un metodo predefinito (continuo a ricevere alcune istanze che scivolano per qualche motivo)

Qual è la chiamata javascript (o jquery se ne hai una) più vicina che sarebbe uguale?



3
@ DanielA. Bianco l'argomento è lo stesso ma, per uno sviluppatore C # come me, è più probabile che questa domanda (con il suo titolo) si trovi
Daniele Armanasco

Risposte:


212

Stai pensando troppo. La stringa nulla e quella vuota sono entrambi valori falsi in JavaScript.

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

Falsey:

  • falso
  • nullo
  • non definito
  • La stringa vuota ''
  • Il numero 0
  • Il numero NaN

16
Incredibile, questo ha ottenuto così tanti voti positivi. Questa risposta non è corretta. Hai detto tu stesso che un valore falsey sarebbe 0. Se l'utente digita 0 in un campo, questa non è una stringa vuota. Una stringa vuota è letteralmente una stringa "vuota".
KingOfHypocrites

3
Se l'utente digita 0, il valore sarà la stringa "0" e non il numero 0. Quindi sarà ancora vero, immagino. Per favore pubblica la tua migliore soluzione, KingOfHypocrites?
Jonas T

2
KingOfHypocrites ha ragione in quanto la stringa "0" darà un risultato errato: "0" == false restituisce true! "0" == false restituisce true
Martien de Jong

2
Utile. Conosci il tuo set di dati però. Se "0" o "false" sono possibili input, questa soluzione potrebbe non funzionare sempre.
Nevyn

12

Se, per qualsiasi motivo, volessi provare solo nulle empty, potresti fare:

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

Nota: questo catturerà anche undefined come @Raynos menzionato nei commenti.


può essere ottimizzato perreturn (s == null || s === "")
Raynos

@ Raynos - Perché == invece di === rispetto a null? E se l'oggetto passato non è definito? undefined <> null, giusto?
Code Maverick

s == nullcattura entrambi nulle da undefinedalloranull == undefined
Raynos

@ Raynos - Ok, ho capito, ma nel caso in cui vuoi sapere davvero undefined o null, dovresti usare ===, corretto?
Code Maverick


5

Se sai che stringnon è numerico, funzionerà:

if (!string) {
  .
  .
  .

La stringa "0" è falsa, quindi non è necessario verificare se la stringa è numerica.
JoJo

1
Sì, la stringa "0" è vera, ma se la variabile stringin realtà non è una stringa ma il numero zero, allora stringsarà falsa. Non sarà un problema se sappiamo che stringè una stringa effettiva o null.
awm

3

puoi solo fare

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

Questo verificherà la presenza stringdi una stringa non definita, nulla e vuota.


1

Per essere chiari, if(!theString){//...}dove theString è una variabile non dichiarata genererà un errore non definito, non lo troverà vero. D'altra parte se hai: if(!window.theString){//...}o var theString; if(!theString){//...}funzionerà come previsto. Nel caso in cui una variabile non possa essere dichiarata (invece di essere una proprietà o semplicemente non impostata), è necessario utilizzare:if(typeof theString === 'undefined'){//...}

La mia preferenza è creare una funzione prototipo che lo racchiuda per te.


1

Poiché la risposta contrassegnata come corretta contiene un piccolo errore, ecco il mio miglior tentativo per trovare una soluzione. Ho due opzioni, una che accetta una stringa, l'altra prende una stringa o un numero, poiché presumo che molte persone stiano mescolando stringhe e numeri in javascript.

Passaggi: -Se l'oggetto è nullo, è una stringa nulla o vuota. -Se il tipo non è stringa (o numero), il valore della stringa è nullo o vuoto. NOTA: anche qui potremmo lanciare un'eccezione, a seconda delle preferenze. -Se il valore della stringa tagliata ha una lunghezza inferiore a 1, è nullo o vuoto.

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

puoi dirlo con la logica

Supponiamo di avere un nome di variabile strVal, per verificare se è nullo o vuoto

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

1

Puoi creare un metodo di utilità che può essere riutilizzato in molti posti come:

 function isNullOrEmpty(str){
    var returnValue = false;
    if (  !str
        || str == null
        || str === 'null'
        || str === ''
        || str === '{}'
        || str === 'undefined'
        || str.length === 0 ) {
        returnValue = true;
    }
    return returnValue;
  }
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.