Frage

habe ich diesen Thread , aber ich habe kein JavaScript konkretes Beispiel sehen. Gibt es eine einfache string.Empty in JavaScript, oder ist es nur ein Fall von Kontrolle für ""?

War es hilfreich?

Lösung

Wenn Sie wollen einfach nur überprüfen, ob es irgendeinen Wert, können Sie

if (strValue) {
    //do something
}

Wenn Sie die speziell für eine leere Zeichenfolge über null zu überprüfen, ich glaube, die Überprüfung würde gegen "" ist die beste Wahl, mit der === Operator (so dass Sie wissen, dass es in der Tat, ein String Sie vergleichen gegen).

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

Andere Tipps

Für die Überprüfung, ob ein String leer ist, null oder nicht definiert Ich benutze:

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

Für die Überprüfung, ob ein String leer ist, null oder nicht definiert Ich benutze:

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

Für die Überprüfung, ob ein String leer oder enthält nur white-space:

String.prototype.isEmpty = function() {
    return (this.length === 0 || !this.trim());
};

Alle oben genannten sind gut, aber das wird noch besser. verwenden !! ( nicht nicht ) Operator.

if(!!str){
some code here;
}

oder Verwendung type casting:

if(Boolean(str)){
    codes here;
}

Beide tun die gleiche Funktion, geben Sie die Variable zu gieße boolean, wo str ist eine Variable.
Returns false für null,undefined,0,000,"",false.
Returns true für string "0" und Leerzeichen "".

Wenn Sie müssen sicherstellen, dass die Zeichenfolge nicht nur ein Haufen von leeren Räumen ist (Ich gehe davon aus das ist für Formularvalidierung) Sie müssen sich auf die Räume eine ersetzen tun.

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

Das nächste, was man bekommen kann str.Empty (unter der Voraussetzung, dass str ein String ist) ist:

if (!str.length) { ...

ich benutze:

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

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

Versuchen:

if (str && str.trim().length) {  
    //...
}

Funktion:

function is_empty(x)
{
   return ( 
        (typeof x == 'undefined')
                    ||
        (x == null) 
                    ||
        (x == false)  //same as: !x
                    ||
        (x.length == 0)
                    ||
        (x == "")
                    ||
        (x.replace(/\s/g,"") == "")
                    ||
        (!/[^\s]/.test(x))
                    ||
        (/^\s*$/.test(x))
  );
}
  

P. S. In Javascript, verwenden Sie Zeilenumbruch nicht nach return;

var s; // undefined
var s = ""; // ""
s.length // 0

Es gibt nichts, eine leere Zeichenfolge in JavaScript darstellt. Führt eine Überprüfung entweder gegen length (wenn Sie wissen, dass die var immer einen String sein) oder gegen ""

Sie können mit lodash : _.isEmpty (Wert).

Es umfasst eine Menge von Fällen wie {}, '', null, undefined usw.

Aber es gibt immer true für Number Typ Javascript Primitive Datentypen wie _.isEmpty(10) oder _.isEmpty(Number.MAX_VALUE) beide kehrt true.

Ich würde nicht zu viele Sorgen über die meist effizient Methode. Verwenden Sie, was auf Ihre Absicht, am deutlichsten ist. Für mich ist das in der Regel strVar == "".

EDIT: pro Kommentar von Constantin , wenn strVar könnte einige, wie eine ganze Zahl 0 Wert am Ende enthält, dann das wäre in der Tat sein, eine jener Absicht-Klärung Situationen.

Sie auch mit regexps gehen könnte:

if((/^\s*$/).test(str)) { }

Checks für Strings, die entweder leer oder gefüllt mit Leerzeichen sind.

Eine Menge Antworten und viele verschiedene Möglichkeiten!

Ohne Zweifel für die schnelle und einfache Implementierung der Gewinner ist: if (!str.length) {...}

Doch wie viele andere Beispiele zur Verfügung. Die beste funktionale Methode, um dies zu, würde ich vorschlagen:

function empty(str)
{
    if (typeof str == 'undefined' || !str || str.length === 0 || str === "" || !/[^\s]/.test(str) || /^\s*$/.test(str) || str.replace(/\s/g,"") === "")
    {
        return true;
    }
    else
    {
        return false;
    }
}

Ein bisschen übertrieben, ich weiß.

  1. prüfen Sie, dass var a; existieren
  2. schneiden Sie die false spaces im Wert, dann Test für emptiness

    if ((a)&&(a.trim()!=''))
    {
      // if variable a is not empty do this 
    }
    

Auch im Fall betrachten Sie ein Leerzeichen gefüllt Zeichenfolge als „leer“. Sie können es mit dieser Regex testen:

!/\S/.test(string); // Returns true if blank.

ich in der Regel so etwas wie diese,

if (!str.length) {
//do some thing
}

Ich habe keine Antwort bemerkt, dass die Möglichkeit von Null-Zeichen in einem String berücksichtigt. Zum Beispiel, wenn wir eine Null-Zeichenfolge haben:

var y = "\0"; // an empty string, but has a null character
(y === "") // false, testing against an empty string does not work
(y.length === 0) // false
(y) // true, this is also not expected
(y.match(/^[\s]*$/)) // false, again not wanted

seine nullness ein Um zu testen, könnte so etwas tun:

String.prototype.isNull = function(){ 
  return Boolean(this.match(/^[\0]*$/)); 
}
...
"\0".isNull() // true

Es funktioniert auf eine leere Zeichenfolge, und auf eine leere Zeichenfolge, und es ist für alle Saiten zugänglich. Darüber hinaus könnte es erweitert werden, um andere JavaScript leer oder Leerzeichen enthalten (das heißt geschütztes Leerzeichen, Bytereihenfolgemarkierung, Zeile / Absatz-Separator, etc.).

Wenn man nicht nur leer, sondern auch leere Strings erkennen muss, werde ich zu Goral Antwort hinzufügen:

function isEmpty(s){
    return !s.length;    
}

function isBlank(s){
    return isEmpty(s.trim());    
}

All diese Antworten sind nett.

Aber ich kann nicht sicher sein, dass Variable ein String ist, enthält nicht nur Leerzeichen (dies ist wichtig für mich), und enthält ‚0‘ (string).

Meine Version:

function empty(str){
    return !str || !/[^\s]+/.test(str);
}

empty(null); // true
empty(0); // true
empty(7); // false
empty(""); // true
empty("0"); // false
empty("  "); // true

Beispiel auf jsfiddle .

Normalerweise verwende ich so etwas wie:

if (str == "") {
     //Do Something
}
else {
     //Do Something Else
}

Ich verwende eine Kombination, sind am schnellsten prüft zuerst.

function isBlank(pString){
    if (!pString || pString.length == 0) {
        return true;
    }
    // checks for a non-white space character 
    // which I think [citation needed] is faster 
    // than removing all the whitespace and checking 
    // against an empty string
    return !/[^\s]+/.test(pString);
}

Leerzeichen Strings Ignorieren, Sie könnten so für null zu überprüfen, leer und unbestimmt:

var obj = {};
(!!obj.str) //returns false

obj.str = "";
(!!obj.str) //returns false

obj.str = null;
(!!obj.str) //returns false

Concise und es funktioniert für nicht definierte Eigenschaften, obwohl es nicht die lesbar ist.

habe ich einige der Forschung, was passiert, wenn Sie eine nicht-String und nicht leer / Nullwert an einen Tester-Funktion übergeben. Wie viele wissen, (0 == „“) ist wahr in Javascript, aber da 0 ein Wert ist und nicht leer oder null, können Sie es testen möchten.

Die beiden folgenden Funktionen return true nur für nicht definierte, null, leer / Leerzeichen Werte und falsch für alles andere, wie Zahlen, boolean, Objekte, Ausdrücke etc.

function IsNullOrEmpty(value)
{
    return (value == null || value === "");
}
function IsNullOrWhiteSpace(value)
{
    return (value == null || !/\S/.test(value));
}

Kompliziertere Beispiele vorhanden, aber diese sind einfache und konsistente Ergebnisse. Es besteht keine Notwendigkeit für undefinierte zu testen, da es in (value == null) Prüfung enthalten ist. Sie können auch Mimik C # Verhalten von ihnen String wie folgt ergänzt:

String.IsNullOrEmpty = function (value) { ... }

Sie wollen es nicht in Strings Prototyp setzen, denn wenn die Instanz der String-Klasse null ist, wird es Fehler:

String.prototype.IsNullOrEmpty = function (value) { ... }
var myvar = null;
if (1 == 2) { myvar = "OK"; } // could be set
myvar.IsNullOrEmpty(); // throws error

ich mit dem folgenden Wert Array getestet. Sie Schleife kann es durch Ihre Funktionen im Zweifelsfall zu testen.

// Helper items
var MyClass = function (b) { this.a = "Hello World!"; this.b = b; };
MyClass.prototype.hello = function () { if (this.b == null) { alert(this.a); } else { alert(this.b); } };
var z;
var arr = [
// 0: Explanation for printing, 1: actual value
    ['undefined', undefined],
    ['(var) z', z],
    ['null', null],
    ['empty', ''],
    ['space', ' '],
    ['tab', '\t'],
    ['newline', '\n'],
    ['carriage return', '\r'],
    ['"\\r\\n"', '\r\n'],
    ['"\\n\\r"', '\n\r'],
    ['" \\t \\n "', ' \t \n '],
    ['" txt \\t test \\n"', ' txt \t test \n'],
    ['"txt"', "txt"],
    ['"undefined"', 'undefined'],
    ['"null"', 'null'],
    ['"0"', '0'],
    ['"1"', '1'],
    ['"1.5"', '1.5'],
    ['"1,5"', '1,5'], // valid number in some locales, not in js
    ['comma', ','],
    ['dot', '.'],
    ['".5"', '.5'],
    ['0', 0],
    ['0.0', 0.0],
    ['1', 1],
    ['1.5', 1.5],
    ['NaN', NaN],
    ['/\S/', /\S/],
    ['true', true],
    ['false', false],
    ['function, returns true', function () { return true; } ],
    ['function, returns false', function () { return false; } ],
    ['function, returns null', function () { return null; } ],
    ['function, returns string', function () { return "test"; } ],
    ['function, returns undefined', function () { } ],
    ['MyClass', MyClass],
    ['new MyClass', new MyClass()],
    ['empty object', {}],
    ['non-empty object', { a: "a", match: "bogus", test: "bogus"}],
    ['object with toString: string', { a: "a", match: "bogus", test: "bogus", toString: function () { return "test"; } }],
    ['object with toString: null', { a: "a", match: "bogus", test: "bogus", toString: function () { return null; } }]
];

zu prüfen, ob genau eine leere Zeichenfolge:

if(val==="")...

zu überprüfen, ob es eine leere Zeichenfolge oder eine logische Entsprechung für No-Wert (null, nicht definiert, 0, NaN, falsch, ...):

if(!val)...

Mittlerweile können wir eine Funktion, die für alle überprüft 'leert' wie null, nicht definiert, '', '', {} [] . Also habe ich das gerade geschrieben haben.

var isEmpty = function(data) {
    if(typeof(data) === 'object'){
        if(JSON.stringify(data) === '{}' || JSON.stringify(data) === '[]'){
            return true;
        }else if(!data){
            return true;
        }
        return false;
    }else if(typeof(data) === 'string'){
        if(!data.trim()){
            return true;
        }
        return false;
    }else if(typeof(data) === 'undefined'){
        return true;
    }else{
        return false;
    }
}

Anwendungsfälle und Ergebnisse.

console.log(isEmpty()); // true
console.log(isEmpty(null)); // true
console.log(isEmpty('')); // true
console.log(isEmpty('  ')); // true
console.log(isEmpty(undefined)); // true
console.log(isEmpty({})); // true
console.log(isEmpty([])); // true
console.log(isEmpty(0)); // false
console.log(isEmpty('Hey')); // false

Es gibt keine isEmpty() Methode, müssen Sie für den Typ und die Länge überprüfen:

if (typeof test === 'string' && test.length === 0){
  ...

Die Typprüfung ist erforderlich, um Laufzeitfehler zu vermeiden, wenn test undefined oder null ist.

Nehmen Sie nicht an, dass die Variable, die Sie prüfen, eine Zeichenfolge ist. Gehen Sie nicht davon, dass, wenn diese var eine Länge hat, dann ist es ein String.

Die Sache ist: sorgfältig darüber nachdenken, was Ihre Anwendung muss tun und akzeptieren kann. Bauen Sie etwas robuster.

Wenn Ihre Methode / Funktion sollte nur eine nicht leere Zeichenfolge verarbeitet dann testen, ob das Argument eine nicht leere Zeichenfolge ist und das nicht tut etwas ‚Trick‘.

Als ein Beispiel für etwas, das explodieren, wenn Sie einige Ratschläge folgen hier nicht sorgfältig.


var getLastChar = function (str) {
 if (str.length > 0)
   return str.charAt(str.length - 1)
}

getLastChar('hello')
=> "o"

getLastChar([0,1,2,3])
=> TypeError: Object [object Array] has no method 'charAt'

Also, ich würde Stick mit


if (myVar === '')
  ...

Versuchen Sie, diese

str.value.length == 0

Sie können es leicht in der nativen String Objekts in JavaScript und wieder verwenden es immer und immer wieder ...
Etwas Einfaches wie unten Code kann die Arbeit für Sie tun, wenn Sie '' leere Zeichenfolgen überprüfen möchten:

String.prototype.isEmpty = String.prototype.isEmpty || function() {
  return !(!!this.length);
}

Ansonsten, wenn Sie möchten, dass beide '' leeren String und ' ' mit Platz überprüfen, können Sie das tun, indem Sie gerade hinzufügen trim(), so etwas wie den folgenden Code:

String.prototype.isEmpty = String.prototype.isEmpty || function() {
   return !(!!this.trim().length);
}

und man kann es nennen diese Art und Weise:

''.isEmpty(); //return true
'alireza'.isEmpty(); //return false
function tell()
{
var pass = document.getElementById('pasword').value;
var plen = pass.length;

now you can check if your string is empty as like 
if(plen==0)
{
         alert('empty');
}
else
{
   alert('you entered something');
}
}


<input type='text' id='pasword' />

Das ist auch eine generische Art und Weise zu überprüfen, ob Feld leer ist.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top