C # String.IsNullOrEmpty Javascript équivalent

86

Je veux essayer de faire un appel de chaîne équivalent au C # String.IsNullOrEmpty(string)en javascript. J'ai regardé en ligne en supposant qu'il y avait un simple appel à faire, mais je n'ai pas pu en trouver.

Pour l'instant, j'utilise une if(string === "" || string === null)déclaration pour le couvrir, mais je préfère utiliser une méthode prédéfinie (je continue à avoir des instances qui glissent pour une raison quelconque)

Quel est l'appel javascript (ou jquery le plus proche si vous en avez un) qui serait égal?

Coupe Stanley Phil
la source
3
@ DanielA.White l'argument est le même mais, pour un développeur C # comme moi, cette question (avec son titre) est plus susceptible d'être trouvée
Daniele Armanasco

Réponses:

211

Vous réfléchissez trop. Les chaînes nulles et vides sont toutes deux des valeurs fausses en JavaScript.

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

Falsey:

  • faux
  • nul
  • indéfini
  • La chaîne vide ''
  • Le chiffre 0
  • Le nombre NaN
JoJo
la source
16
Incroyable, cela a obtenu tellement de votes. Cette réponse est incorrecte. Vous avez dit vous-même qu'une valeur falsey serait 0. Si l'utilisateur tape 0 dans un champ, ce n'est pas une chaîne vide. Une chaîne vide est littéralement une chaîne "vide".
KingOfHypocrites
3
Si l'utilisateur tape 0, la valeur sera la chaîne "0" et non le numéro 0. Donc ce sera toujours vrai, je suppose. Veuillez publier votre meilleure solution, KingOfHypocrites?
Jonas T
2
KingOfHypocrites a raison en ce que la chaîne "0" donnera un résultat incorrect: "0" == false renvoie true! "0" == false renvoie true
Martien de Jong
2
Utile. Cependant, connaissez votre ensemble de données. Si «0» ou «false» sont des entrées possibles, cette solution peut ne pas toujours fonctionner.
Nevyn
12

Si, pour une raison quelconque, vous vouliez tester uniquement nullet que emptyvous pouviez faire:

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

Remarque: Cela attrapera également undefined comme @Raynos mentionné dans les commentaires.

Code Maverick
la source
peut être optimisé pourreturn (s == null || s === "")
Raynos
@Raynos - Pourquoi == au lieu de === par rapport à null? Et si l'objet passé n'est pas défini? undefined <> null, non?
Code Maverick
s == nullattrape les deux nullet undefineddepuisnull == undefined
Raynos
@Raynos - Ok, j'ai compris, mais dans le cas où vous voulez vraiment savoir undefined ou null, vous devrez utiliser ===, correct?
Code Maverick
5

Si vous savez que ce stringn'est pas numérique, cela fonctionnera:

if (!string) {
  .
  .
  .
awm
la source
La chaîne "0" est fausse, vous n'avez donc pas à vérifier si la chaîne est numérique.
JoJo
1
Oui, la chaîne "0" est vraie, mais si la variable stringn'est en fait pas une chaîne mais le nombre zéro, alors stringelle sera fausse. Ce ne sera pas un problème si nous savons qu'il strings'agit d'une chaîne réelle ou d'une valeur nulle.
awm
3

tu peux juste faire

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

Cela vérifiera stringles chaînes non définies, nulles et vides.

Verre brisé
la source
1

Pour être clair, if(!theString){//...}là où theString est une variable non déclarée, une erreur non définie sera générée, mais elle ne la trouve pas vraie. D'autre part si vous avez: if(!window.theString){//...}ou var theString; if(!theString){//...}cela fonctionnera comme prévu. Dans le cas où une variable ne peut pas être déclarée (par opposition à être une propriété ou simplement non définie), vous devez utiliser:if(typeof theString === 'undefined'){//...}

Ma préférence est de créer une fonction prototype qui l'enveloppe pour vous.

Craig
la source
1

Étant donné que la réponse marquée comme correcte contient une petite erreur, voici mon meilleur essai pour trouver une solution. J'ai deux options, l'une qui prend une chaîne, l'autre prend une chaîne ou un nombre, car je suppose que beaucoup de gens mélangent des chaînes et des nombres en javascript.

Étapes: -Si l'objet est nul, il s'agit d'une chaîne nulle ou vide. -Si le type n'est pas une chaîne (ou un nombre), la valeur de la chaîne est nulle ou vide. REMARQUE: nous pouvons également lancer une exception ici, en fonction des préférences. -Si la valeur de la chaîne tronquée a une longueur inférieure à 1, elle est nulle ou vide.

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
la source
1

tu peux le dire par logique

Supposons que vous ayez un nom de variable un strVal, pour vérifier si est nul ou vide

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

Vous pouvez créer une méthode utilitaire qui peut être réutilisée dans de nombreux endroits tels que:

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