4026 Stimmen

Wie kann ich in JavaScript nach einer leeren/undefinierten/nullen Zeichenkette suchen?

Ich sah diese Frage , aber ich habe kein JavaScript-spezifisches Beispiel gesehen. Gibt es eine einfache string.Empty in JavaScript zur Verfügung, oder ist es nur eine Frage der Prüfung auf "" ?

5 Stimmen

Nur FYI, ich denke, die nützlichsten APIs für die Klasse String sind bei Mozilla y Javascript-Baukasten . [elated.com]( elated.com/articles/working-with-strings ) hat ein Tutorial über alle Eigenschaften, Methoden,... von String. Bitte beachten Sie: Der Mozilla-Link wurde aktualisiert zu developer.mozilla.org/de/JavaScript/Reference/Global_Objects/

0 Stimmen

Sehen Sie sich das an: stackoverflow.com/a/36491147/7026966

0 Stimmen

Str.länge > -1

4969voto

bdukes Punkte 144019

Wenn Sie nur prüfen wollen, ob es eine Wahrheitswert können Sie tun:

if (strValue) {
    //do something
}

Wenn Sie speziell für eine leere Zeichenfolge über null überprüfen müssen, würde ich denken, Überprüfung gegen "" ist die beste Lösung, wenn Sie die === Betreiber (damit Sie wissen, dass es sich tatsächlich um eine Zeichenkette handelt, mit der Sie vergleichen).

if (strValue === "") {
    //...
}

280 Stimmen

Das Testen der Längeneigenschaft kann tatsächlich schneller sein als das Testen der Zeichenkette gegen "", da der Interpreter kein String-Objekt aus dem String-Literal erstellen muss.

79 Stimmen

@Vincent bei der naiven Profilerstellung in den Chrome-Entwicklertools, Tests === '' gegen .length keine erkennbare Verbesserung (und die Verwendung von .length funktioniert nur, wenn Sie davon ausgehen können, dass Sie eine Zeichenkette haben)

47 Stimmen

@bdukes wenn Sie anfangen, sich um diese Art von Mikro-Optimierungen zu kümmern, glaube ich nicht, dass Chrome der Browser ist, in dem Sie die meisten Ihrer Leistungsprobleme haben...

1430voto

Jano González Punkte 13898

Zur Überprüfung, ob eine Variable falsch oder wenn das Attribut length gleich Null ist (was für eine Zeichenkette bedeutet, dass sie leer ist), verwende ich:

function isEmpty(str) {
    return (!str || str.length === 0 );
}

(Beachten Sie, dass Strings nicht die einzigen Variablen sind, die ein <code>length</code> Attribut, Arrays haben sie auch, zum Beispiel).

Um zu prüfen, ob eine Variable falsch ist oder ob die Zeichenkette nur Leerzeichen enthält oder leer ist, verwende ich:

function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}

Wenn Sie möchten, können Sie Affengehege die String Prototypen wie diesen:

String.prototype.isEmpty = function() {
    // This doesn't work the same way as the isEmpty function used 
    // in the first example, it will return true for strings containing only whitespace
    return (this.length === 0 || !this.trim());
};
console.log("example".isEmpty());

Beachten Sie, dass monkey-Parcheando eingebaute Typen umstritten sind, da sie Code brechen können, der von der bestehenden Struktur der eingebauten Typen abhängt, aus welchem Grund auch immer.

47 Stimmen

Warum 0 === str.length anstelle von str.length === 0 ?

133 Stimmen

@Vincent Bedingungen werden oft wie folgt geschrieben if (variable == constant value) und wenn Sie ein '=' vergessen, weisen Sie der Variablen den konstanten Wert zu, anstatt zu testen. Der Code funktioniert trotzdem, da man Variablen in einem if zuweisen kann. Eine sicherere Methode, diese Bedingung zu schreiben, besteht also darin, den konstanten Wert und die Variable umzukehren. Auf diese Weise wird beim Testen des Codes ein Fehler angezeigt (Ungültige linke Seite in der Zuweisung). Sie können auch etwas wie JSHint verwenden, um Zuweisungen in Bedingungen zu verbieten und gewarnt zu werden, wenn Sie eine schreiben.

0 Stimmen

Ich vergaß zu erwähnen, dass Sie, da Sie meistens '===' oder '!==' verwenden, weniger mit dieser Art von Fehlern konfrontiert sind.

136voto

Ates Goral Punkte 132294

Am ehesten kann man die str.Empty (mit der Vorbedingung, dass str ein String ist) ist:

if (!str.length) { ...

27 Stimmen

Würde das nicht eine Ausnahme auslösen, wenn str null ist?

8 Stimmen

@PicMickael Ja! Das würde str.Empty .

1 Stimmen

Beachten Sie, dass Strings nicht der einzige Variablentyp sind, der eine length Attribut. Das gilt auch für Arrays.

117voto

Sugendran Punkte 2051

Wenn Sie sicherstellen müssen, dass die Zeichenkette nicht nur aus einer Reihe von Leerzeichen besteht (ich nehme an, dies ist für die Formularvalidierung), müssen Sie die Leerzeichen ersetzen.

if(str.replace(/\s/g,"") == ""){
}

8 Stimmen

Erfüllt aber die Aufgabe, wenn Sie eigentlich auf eine Zeichenkette ohne Leerzeichen testen wollen. Gibt es eine weniger kostspielige Möglichkeit, dies zu testen?

4 Stimmen

Wie sieht es mit der Eigenschaft der Länge aus?

30 Stimmen

Anstatt alle Leerzeichen zu entfernen, warum nicht einfach prüfen, ob ein Nicht-Leerzeichen vorhanden ist? Hat 2 Vorteile, dass es früh abspringen kann, wenn es ein Nicht-Leerzeichen gibt, und es muss nicht eine neue Zeichenfolge zurückgeben, die Sie dann gegen überprüfen. if(str.match(/\S/g)){}

80voto

Jet Punkte 1209

Ich benutze:

function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case typeof(e) == "undefined":
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
})) // false

6 Stimmen

Diese Lösung ist eher sprachunabhängig. Die einzige JavaScript-Funktion, auf die sie angewiesen ist, ist typeof. Sie ist also ein gutes Beispiel für eine Lösung, die Sie verwenden können, wenn Sie den Implementierungen in verschiedenen Browsern nicht trauen und keine Zeit haben, eine bessere Lösung zu finden. (IE, kein Internetzugang). Es ist so etwas wie ein Beweis. Nicht die sauberste, aber man kann sicher sein, dass sie funktioniert, ohne zu viel über JavaScript zu wissen.

2 Stimmen

Ich würde sogar noch ein bisschen weiter gehen und einen ===-Operator für den undefinierten Fall hinzufügen. Ansonsten ist es einfach die perfekte Antwort.

1 Stimmen

El typeof im switch hat bei mir nicht funktioniert. Ich fügte eine if (typeof e == "undefined") Test und das funktioniert. Warum?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X