2012-04-21 4 views
27

Une longueur de chaîne qui contient un espace est toujours égal à 1:Detect chaîne qui contiennent seulement des espaces

alert('My str length: ' + str.length); 

L'espace est un personnage, donc:

str = " "; 
alert('My str length:' + str.length); // My str length: 3 

Comment puis-je faire une distinction entre une chaîne vide et une chaîne qui contient seulement des espaces? Comment puis-je détecter une chaîne contenant uniquement des espaces?

+0

Couper et vérifier que la longueur est zéro. Utilisez-vous jQuery? –

+2

Supprimer tout espace blanc et voir si la longueur de la chaîne est '0'? Ou utilisez une expression régulière pour faire correspondre uniquement les chaînes d'espaces ... –

+1

duplication possible de [Comment vérifier si le champ de texte de saisie contient uniquement des espaces blancs?] (Http://stackoverflow.com/questions/2662245/how-to-check -whether-the-input-text-field-contains-only-white-spaces) –

Répondre

47

Pour ce faire, vous pouvez utiliser une expression régulière pour supprimer tous les espaces dans la chaîne. Si la longueur de la chaîne résultante est 0, vous pouvez être sûr que l'espace contient uniquement des espaces. Essayez ceci:

var str = " "; 
if (!str.replace(/\s/g, '').length) { 
    // string only contained whitespace (ie. spaces, tabs or line breaks) 
} 

Example fiddle

+0

Eh bien, la chaîne contenait seulement des espaces. – dwerner

4

Vous pouvez couper votre valeur de chaîne en créant une fonction de garniture pour vos cordes.

String.prototype.trim = function() { 
    return this.replace(/^\s*/, "").replace(/\s*$/, ""); 
} 

maintenant il sera disponible pour toutes vos cordes et vous pouvez l'utiliser comme

str.trim().length// Result will be 0 

Vous pouvez également utiliser cette méthode pour supprimer les espaces blancs au début et à la fin de la chaîne-à-dire

" hello ".trim(); // Result will be "hello" 
+2

L'extension des prototypes d'objets intégrés est une mauvaise idée. – sbichenko

+0

@exizt: que se passe-t-il si ce n'est que son propre code? – Shehzad

9

la solution la plus rapide serait d'utiliser la fonction prototype regex test() et la recherche de tout caractère qui est pas une rupture de l'espace ou d'une ligne \S: 012 Dans le cas où vous avez une chaîne super longue, cela peut faire une différence significative.

Questions connexes