Y a-t-il une fonction intégrée similaire à IsNullOrEmpty
pour vérifier si une chaîne est nulle ou vide, en PowerShell ?
Je n'ai pas encore trouvé et s'il existe une méthode intégrée, je ne veux pas écrire une fonction pour cela.
Y a-t-il une fonction intégrée similaire à IsNullOrEmpty
pour vérifier si une chaîne est nulle ou vide, en PowerShell ?
Je n'ai pas encore trouvé et s'il existe une méthode intégrée, je ne veux pas écrire une fonction pour cela.
Vous rendre la tâche trop difficile. PowerShell gère cela de manière assez élégante par exemple :
> $str1 = $null
> if ($str1) { 'non vide' } else { 'vide' }
vide
> $str2 = ''
> if ($str2) { 'non vide' } else { 'vide' }
vide
> $str3 = ' '
> if ($str3) { 'non vide' } else { 'vide' }
non vide
> $str4 = 'asdf'
> if ($str4) { 'non vide' } else { 'vide' }
non vide
> if ($str1 -et $str2) { 'ni vide' } else { 'un ou les deux sont vides' }
un ou les deux sont vides
> if ($str3 -et $str4) { 'ni vide' } else { 'un ou les deux sont vides' }
ni vide
@pencilCake Oui, c'est ce que je dis et l'exemple ci-dessus le montre en action. Ce que le test ne vérifiera pas, c'est IsNullOrWhitespace().
Je suis d'accord avec votre réponse, mais elle n'est correcte que en combinaison avec @ShayLevy. Lorsqu'il s'agit de chaînes, $null
n'est pas la même chose que ''
. Pour la plupart des cas d'utilisation, vous pouvez supposer qu'ils le sont ; il s'agit de la discrétion du programmeur. Vous pouvez également considérer ' '
comme vide/null, ce qui peut être fait avec [string]::IsNullOrWhiteSpace(' ')
ou ' '.Trim()
... lequel est plus facile à lire ? J'aime la simplicité/l'élégance du codage avec PowerShell, mais parfois vous devez être plus spécifique. Remarque : Utilisez [string]::
+ pour "tabuler" à travers tous les méthodes disponibles de [string]
J'aime beaucoup cette façon car il est évident de comprendre ce qu'elle fait, peu importe votre connaissance de PowerShell - ce qui serait logique pour les programmeurs non-Powershell.
Une chose à noter avec PowerShell est que les chaînes nulles passées à un commandlet ou une fonction ne restent pas nulles. Elles sont converties en chaînes vides. Voir le bogue Microsoft Connect sur connect.microsoft.com/PowerShell/feedback/details/861093/….
En plus de [string]::IsNullOrEmpty
pour vérifier la nullité ou la vacuité, vous pouvez convertir une chaîne de caractères en un booléen explicitement ou dans des expressions booléennes :
$string = $null
[bool]$string
if (!$string) { "la chaîne est nulle ou vide" }
$string = ''
[bool]$string
if (!$string) { "la chaîne est nulle ou vide" }
$string = 'quelque chose'
[bool]$string
if ($string) { 'la chaîne n\'est pas nulle ou vide' }
Résultat:
False
la chaîne est nulle ou vide
False
la chaîne est nulle ou vide
True
la chaîne n'est pas nulle ou vide
Beau point. Si
clause convertit internalement tout ce qui se trouve entre les parenthèses en un seul booléen, ce qui signifie si($string){Choses à faire pour non vide ni null}
ou si(!$string){Choses à faire pour vide ou null}
sans conversion explicite [bool]
serait suffisant.
Personnellement, je n'accepte pas un espace ($STR3) en tant que 'non vide'.
Lorsqu'une variable contient uniquement des espaces est passée à un paramètre, il arrive souvent qu'une erreur indique que la valeur du paramètre ne peut pas être '$null', au lieu de dire qu'elle ne peut pas être un espace vide, certains commandes de suppression pourraient supprimer un dossier racine au lieu d'un sous-dossier si le nom du sous-dossier est un "espace blanc", autant de raisons de ne pas accepter une chaîne contenant des espaces dans de nombreux cas.
Je trouve que c'est la meilleure façon d'y parvenir :
$STR1 = $null
IF ([string]::IsNullOrWhitespace($STR1)){'vide'} else {'non vide'}
Vide
$STR2 = ""
IF ([string]::IsNullOrWhitespace($STR2)){'vide'} else {'non vide'}
Vide
$STR3 = " "
IF ([string]::IsNullOrWhitespace($STR3)){'vide !! :-)'} else {'non vide :-('}
Vide!! :-)
$STR4 = "Nico"
IF ([string]::IsNullOrWhitespace($STR4)){'vide'} else {'non vide'}
Non vide
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.
2 votes
Espérons que cela aide rkeithhill.wordpress.com/2007/01/06/…
10 votes
Eh bien, vous utilisez .NET, donc ne pouvez-vous pas appeler
String.IsNullOrEmpty
?