Ich habe diese Frage gesehen, aber ich habe kein JavaScript-spezifisches Beispiel gesehen. Gibt es eine einfache string.Empty
in JavaScript verfügbar, oder ist es nur eine Frage der Überprüfung ""
?
Wie kann ich in JavaScript nach einer leeren/undefinierten/null-Zeichenfolge suchen?
Casademora
Jano González
Zum Prüfen, ob eine Variable ist falsch oder wenn das Längenattribut gleich Null ist (was für eine Zeichenfolge bedeutet, dass es leer ist), verwende ich:
function isEmpty(str) {
return (!str || str.length === 0 );
}
(Beachten Sie, dass Strings nicht die einzigen Variablen mit a sind length
Attribut, Arrays haben sie zum Beispiel auch.)
Um zu prüfen, ob eine Variable falsch ist oder ob der String nur Leerzeichen enthält oder leer ist, verwende ich:
function isBlank(str) {
return (!str || /^\s*$/.test(str));
}
Wenn Du willst, kannst Du Monkey-Patch der String
Prototyp so:
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 das Monkey-Patching integrierter Typen umstritten ist, da es aus irgendeinem Grund Code beschädigen kann, der von der vorhandenen Struktur integrierter Typen abhängt.
-
warum 0 === str.length statt str.length === 0 ?
– Vinzenz
23. September 2013 um 8:11 Uhr
-
@Vincent Bedingungen werden oft so geschrieben
if (variable == constant value)
und wenn Sie ein ‘=’ vergessen, weisen Sie der Variablen den konstanten Wert zu, anstatt zu testen. Der Code funktioniert weiterhin, da Sie eine Variable in einem if zuweisen können. Eine sicherere Art, diese Bedingung zu schreiben, besteht also darin, den konstanten Wert und die Variable umzukehren. Auf diese Weise sehen Sie beim Testen Ihres Codes einen Fehler (ungültige linke Seite in der Zuweisung). Sie können auch etwas wie JSHint verwenden, um die Zuweisung in Bedingungen zu verbieten und gewarnt zu werden, wenn Sie eine schreiben.– grandouassou
23. September 2013 um 9:58 Uhr
-
schade, dass
/^\s*$/.test(str)
ist nicht wirklich lesbar – vielleicht wäre es besser, Leerzeichen mit einfacherem Code oder Regex zu entfernen? siehe stackoverflow.com/questions/6623231/… und auch stackoverflow.com/questions/10800355/…– Adrien Be
15. Juli 2014 um 11:33 Uhr
-
/^\s*$/.test(str) kann durch str.trim().length === 0 ersetzt werden
– Schadenfreude
19. Juni 2015 um 12:35 Uhr
-
@Vincent das wird auch “Yoda Conditions” genannt
if blue is the sky
. Sehen dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html– AZ.
26. Januar 2016 um 0:12 Uhr
-
Gibt es einen Unterschied zwischen dem Verhalten von
if(str)
undif(!!str)
?– Peter Olsen
19. Dezember 2014 um 18:28 Uhr
-
@PeterOlson Wenn Sie versuchen, eine Variable als booleschen Wert zu speichern, der mehrere Zeichenfolgen auf Inhalt überprüft, sollten Sie dies tun
var any = (!!str1 && !!str2 && !!str3)
Behandlung, wenn dort auch eine Zahl steht– John Ruddell
10. März 2015 um 23:00 Uhr
-
Das ist die Lösung, die ich immer verwende.
!!str.trim()
um sicherzustellen, dass der String nicht nur aus Leerzeichen besteht.– Dario Oddenino
11. Februar 2016 um 10:56 Uhr
-
Nicht nicht sieht aus wie ein Hack,
Boolean(str)
ist viel besser lesbar und weniger “wtfish”.– Shinzu
17. Oktober 2016 um 21:28 Uhr
-
Dies ist einfach nutzlos in einem
if
wandelt es falsche Werte in umfalse
und Wahrheitswerte zutrue
. EINif
Block wird entweder ausgeführt oder nicht, je nachdem, ob der Ausdruck wahr ist, es macht keinen Sinn, etwas hinzuzufügen!!
– Oli Crt
8. September 2020 um 9:03 Uhr
Ates Goral
Das nächste, was Sie erreichen können str.Empty
(mit der Voraussetzung, dass str ein String ist) ist:
if (!str.length) { ...
-
Würde das nicht eine Ausnahme auslösen, wenn str null ist?
– Bild Michael
11. September 2018 um 13:50 Uhr
-
@PicMickael Ja! So würde
str.Empty
.– Ates Goral
12. September 2018 um 3:25 Uhr
-
Beachten Sie, dass Strings nicht der einzige Variablentyp sind, der ein hat
length
Attribut. Arrays tun es auch.– Flimmer
11. August 2021 um 15:15 Uhr
Sugendran
Wenn Sie sicherstellen müssen, dass die Zeichenfolge nicht nur ein Haufen leerer Leerzeichen ist (ich nehme an, dies dient der Formularvalidierung), müssen Sie die Leerzeichen ersetzen.
if(str.replace(/\s/g,"") == ""){
}
-
Würde das nicht eine Ausnahme auslösen, wenn str null ist?
– Bild Michael
11. September 2018 um 13:50 Uhr
-
@PicMickael Ja! So würde
str.Empty
.– Ates Goral
12. September 2018 um 3:25 Uhr
-
Beachten Sie, dass Strings nicht der einzige Variablentyp sind, der ein hat
length
Attribut. Arrays tun es auch.– Flimmer
11. August 2021 um 15:15 Uhr
Peter Mortensen
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
-
Diese Lösung ist sprachunabhängiger. Die einzige JavaScript-Funktion, auf die es sich stützt, ist typeof. Es ist also ein gutes Beispiel für eine Lösung, die Sie verwenden können, wenn Sie den Implementierungen in verschiedenen Browsern nicht vertrauen und keine Zeit haben, eine bessere Lösung zu finden. (IE, kein Internetzugang). Es ist so etwas wie ein Beweis. Nicht das sauberste, aber Sie können sicher sein, dass es funktioniert, ohne zu viel über JavaScript zu wissen.
– Jeff Davis
20. April 2012 um 13:11 Uhr
-
Ich würde sogar noch ein bisschen weiter gehen und es mit einem ===-Operator für den undefinierten Fall festnageln. Ansonsten ist es einfach die perfekte Antwort.
– xarlymg89
25. Januar 2018 um 10:06 Uhr
-
Die
typeof
in demswitch
hat bei mir nicht funktioniert. Ich habe ein hinzugefügtif (typeof e == "undefined")
testen und das geht. Warum?– Lukas
17. April 2018 um 11:15 Uhr
-
@Lucas Weil dies ein Tippfehler oder ein Versehen war. Ihre Änderung ist der richtige Ansatz. (Das Original bezieht sich auf den Kontext der leeren Funktion, nicht auf den e-Parameter, den die Funktion überprüfen soll.)
– beeThree
25. Februar 2020 um 3:01 Uhr
-
Könnten wir verwenden
case undefined:
anstattcase typeof(e) == "undefined":
?– Boris J.
27. März 2020 um 19:34 Uhr
Nur zu Ihrer Information, ich denke, die nützlichsten APIs für die String-Klasse sind bei Mozilla und Javascript-Kit. [elated.com](elated.com/articles/working-with-strings ) hat ein Tutorial zu allen Eigenschaften, Methoden, … von String. Bitte beachten Sie: Der Mozilla-Link wurde auf aktualisiert developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…
– Gen T
2. Oktober 2008 um 15:16 Uhr
Überprüfen Sie dies: stackoverflow.com/a/36491147/7026966
– Himanshu Shekhar
13. Mai 2019 um 10:58 Uhr
Es wäre sehr hilfreich, wenn die Anforderung klar spezifiziert wäre. Für welche Werte sollten ist leer Rückkehr wahr? Die Überprüfung auf “” folgert, dass es nur wahr zurückgeben sollte, wenn der Wert Typ Zeichenfolge und Länge 0 ist. Viele Antworten hier gehen davon aus, dass es auch für einige oder alle falschen Werte wahr zurückgeben sollte.
– RobG
16. Oktober 2019 um 12:47 Uhr
Str.länge > -1
– Omar Bachsch
31. Januar 2021 um 4:29 Uhr
Ich stimme @RobG voll und ganz zu, diese Frage ist schlecht definiert. Warum um alles in der Welt sollten Sie darüber nachdenken
null
oderundefined
leer? Ein leerer String ist ein leerer String, ist es nichtnull
oderundefined
– Flimmer
11. August 2021 um 14:59 Uhr