web-dev-qa-db-fra.com

Comment vérifier si une variable est une chaîne nulle ou vide ou tous les espaces en JavaScript?

Je dois vérifier si une variable est nulle, contient tous les espaces vides ou est simplement vide ("").

J'ai les éléments suivants, mais cela ne fonctionne pas:

var addr;
addr = "  ";

if (!addr) {
    // pull error 
}

Si je fais ce qui suit, ça marche:

if (addr) {

}​

Ce dont j'ai besoin, c'est quelque chose comme la méthode C # String.IsNullOrWhiteSpace(value) .

65
Nate Pet

Une solution non-jQuery qui imite plus étroitement IsNullOrWhiteSpace, mais pour détecter les espaces nuls, vides ou tous les espaces uniquement:

function isEmptyOrSpaces(str){
    return str === null || str.match(/^ *$/) !== null;
}

...puis:

var addr = '  ';

if(isEmptyOrSpaces(addr)){
    // error 
}

* EDIT * Veuillez noter que op indique spécifiquement "Il faut que je vérifie si un var est nul ou s'il y a des espaces vides ou simplement vide". Donc, bien que oui, les "espaces" englobent plus que null, espaces ou espaces, ma réponse est destinée à répondre à la question spécifique de op. Ceci est important car op ne veut PAS attraper des choses comme des tabulations, par exemple.

95
Madbreaks

Vous pouvez utiliser if(addr && (addr = $.trim(addr)))

Cela présente l'avantage de supprimer tous les espaces extérieurs de addr au lieu de les ignorer lors de la vérification.

Référence: http://api.jquery.com/jQuery.trim/

15
ThiefMaster
if (addr == null || addr.trim() === ''){
  //...
}

Une comparaison null saisira également undefined. Si vous voulez que false réussisse aussi, utilisez !addr. Pour la compatibilité ascendante du navigateur, échangez addr.trim() pour $.trim(addr).

12
Ricardo Tomasi

Vous pouvez créer votre propre méthode. Equivalent à

String.IsNullOrWhiteSpace(value)

function IsNullOrWhiteSpace( value) {

    if (value== null) return true;

    return value.replace(/\s/g, '').length == 0;
}
4
Shehzad

Lors de la recherche d'espaces, la méthode c # utilise le standard Unicode. Les espaces blancs incluent les espaces, les tabulations, les retours à la ligne et de nombreux autres codes de caractères non imprimables. Donc, il vaut mieux utiliser:

function isNullOrWhiteSpace(str){
    return str == null || str.replace(/\s/g, '').length < 1;
}
2
Joao Leme

Version simplifiée de ce qui précède: (à partir d'ici: https://stackoverflow.com/a/32800728/47226 )

function isNullOrWhitespace( input ) {
  return !input || !input.trim();
}
2
Aaron Hoffman
isEmptyOrSpaces(str){
    return str === null || str.trim().length>0;
}
0
Thalinda Bandara
isEmptyOrSpaces(str){
    return !str || str.trim() === '';
}
0
Ali

Essayez ceci

/**
  * Checks the string if undefined, null, not typeof string, empty or space(s)
  * @param {any} str string to be evaluated
  * @returns {boolean} the evaluated result
*/
function isStringNullOrWhiteSpace(str) {
    return str === undefined || str === null
                             || typeof str !== 'string'
                             || str.match(/^ *$/) !== null;
}

Vous pouvez l'utiliser comme ça

isStringNullOrWhiteSpace('Your String');
0
Rod lauro Romarate
function isEmptyOrSpaces(str){
    return str === null || str.match(/^[\s\n\r]*$/) !== null;
}
0
pico