C # String.IsNullOrEmpty Javascript-Äquivalent

84

Ich möchte versuchen, einen Zeichenfolgenaufruf auszuführen, der dem C # String.IsNullOrEmpty(string)in Javascript entspricht. Ich schaute online und ging davon aus, dass ein einfacher Anruf zu tätigen war, aber ich konnte keinen finden.

Im Moment verwende ich eine if(string === "" || string === null)Anweisung, um sie abzudecken, aber ich würde lieber eine vordefinierte Methode verwenden (ich bekomme immer wieder einige Instanzen, die aus irgendeinem Grund vorbeigehen).

Was ist der nächste Javascript-Aufruf (oder jquery, wenn Sie dann einen haben), der gleich wäre?

Stanley Cup Phil
quelle
3
@ DanielA.Weiß das Argument ist das gleiche, aber für einen C # -Entwickler wie mich ist diese Frage (mit ihrem Titel) wahrscheinlicher zu finden
Daniele Armanasco

Antworten:

205

Du überdenkst. Null und leere Zeichenfolge sind beide Falsey-Werte in JavaScript.

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

Falsey:

  • falsch
  • Null
  • nicht definiert
  • Die leere Zeichenfolge ''
  • Die Nummer 0
  • Die Nummer NaN
JoJo
quelle
14
Erstaunlich, dass dies so viele Stimmen bekommen hat. Diese Antwort ist falsch. Sie haben selbst gesagt, dass ein Falsey-Wert 0 wäre. Wenn der Benutzer 0 in ein Feld eingibt, ist dies keine leere Zeichenfolge. Eine leere Zeichenfolge ist buchstäblich eine "leere" Zeichenfolge.
KingOfHypocrites
3
Wenn der Benutzer 0 eingibt, ist der Wert "0" und nicht die Nummer 0. Es wird also immer noch wahr sein, denke ich. Bitte posten Sie Ihre beste Lösung, KingOfHypocrites?
Jonas T
2
KingOfHypocrites hat insofern Recht, als die Zeichenfolge "0" ein falsches Ergebnis liefert: "0" == false gibt true zurück! "0" == false gibt true zurück
Martien de Jong
2
Nützlich. Kennen Sie Ihren Datensatz. Wenn "0" oder "false" mögliche Eingaben sind, funktioniert diese Lösung möglicherweise nicht immer.
Nevyn
12

Wenn Sie aus irgendeinem Grund nur testen wollten nullund emptyFolgendes tun könnten:

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

Hinweis: Dies wird auch als @Raynos in den Kommentaren undefiniert abgefangen.

Code Maverick
quelle
kann optimiert werden aufreturn (s == null || s === "")
Raynos
@ Raynos - Warum == statt === in Bezug auf null? Und was ist, wenn das übergebene Objekt undefiniert ist? undefined <> null, richtig?
Code Maverick
s == nullfängt beide null& undefinedseitnull == undefined
Raynos
@ Raynos - Ok, ich verstehe, aber für den Fall, dass Sie wirklich undefiniert oder null wissen wollen, müssten Sie === verwenden, richtig?
Code Maverick
5

Wenn Sie wissen, dass dies stringnicht numerisch ist, funktioniert dies:

if (!string) {
  .
  .
  .
awm
quelle
Die Zeichenfolge "0" ist falsch, Sie müssen also nicht überprüfen, ob die Zeichenfolge numerisch ist.
JoJo
1
Ja, die Zeichenfolge "0" ist wahr, aber wenn die Variable stringtatsächlich keine Zeichenfolge, sondern die Zahl Null ist, ist stringsie falsch. Es ist kein Problem, wenn wir wissen, dass stringes sich entweder um eine tatsächliche Zeichenfolge oder um eine Null handelt.
awm
3

du kannst es einfach tun

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

Dadurch wird stringnach undefinierten, null und leeren Zeichenfolgen gesucht.

Glassplitter
quelle
1

Um klar zu sein, if(!theString){//...}wenn theString eine nicht deklarierte Variable ist, wird ein undefinierter Fehler ausgegeben, der nicht wahr ist. Auf der anderen Seite, wenn Sie haben: if(!window.theString){//...}oder var theString; if(!theString){//...}es wird wie erwartet funktionieren. In dem Fall, dass eine Variable möglicherweise nicht deklariert ist (im Gegensatz zu einer Eigenschaft oder einfach nicht festgelegt), müssen Sie Folgendes verwenden:if(typeof theString === 'undefined'){//...}

Ich bevorzuge es, eine Prototypfunktion zu erstellen, die sie für Sie zusammenfasst.

Craig
quelle
1

Da die als richtig gekennzeichnete Antwort einen kleinen Fehler enthält, ist hier mein bester Versuch, eine Lösung zu finden. Ich habe zwei Möglichkeiten, eine für eine Zeichenfolge, die andere für eine Zeichenfolge oder eine Zahl, da ich davon ausgehe, dass viele Leute Zeichenfolgen und Zahlen in Javascript mischen.

Schritte: -Wenn das Objekt null ist, ist es eine null oder leere Zeichenfolge. -Wenn der Typ keine Zeichenfolge (oder Zahl) ist, ist der Zeichenfolgenwert null oder leer. HINWEIS: Abhängig von den Einstellungen wird möglicherweise auch hier eine Ausnahme ausgelöst. -Wenn der zugeschnittene Zeichenfolgenwert eine Länge hat, die kleiner als 1 ist, ist er null oder leer.

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
quelle
1

man kann es logisch sagen

Angenommen, Sie haben einen Variablennamen a strVal, um zu überprüfen, ob er null oder leer ist

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

Sie können eine Utility-Methode erstellen, die an vielen Stellen wiederverwendet werden kann, z.

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