Articles

La chaîne PowerShell contient

X

Confidentialité&Cookies

Ce site utilise des cookies. En continuant, vous acceptez leur utilisation. En savoir plus, y compris comment contrôler les cookies.

Je l’ai!
Publicités

Comment pouvez-vous vérifier si une chaîne PowerShell contient un caractère ou une sous-chaîne?

Vous pourriez être tenté d’essayer ceci:

PS > $s= ‘abcdefghijk’
PS >Falses-contient ‘f’
False

Mais – contient est pour travailler avec le contenu des tableaux. Vous pouvez donc faire ceci:

PS >(ss.ToCharArray()) – contient ‘f’
True

Vous convertissez implicitement la chaîne ‘f’ en pour faire la comparaison. Votre comparaison est en fait la suivante

PS >(ss.ToCharArray()) – contient ’f’
True

C’est bien pour un seul caractère mais si vous voulez tester une sous-chaîne

PS >ss – contient ‘def’
False
PS >(ss.ToCharArray()) – contient ‘def’
False

Cette approche ne fonctionnera pas.

Vous devez utiliser la méthode Indexof

PS > $s.Indexof(‘f’)
5
PS >ss.Indexof(‘def’)
3

La valeur renvoyée est la position du PREMIER caractère dans la sous-chaîne.

Vous pouvez également tester un tableau de caractères

PS:> $a = ‘g’,’j’,’a’
PS:> $s.IndexOfAny($a)
0

de Nouveau, vous obtenez le PREMIER caractère dans ce cas, le ‘a’

Souvenez-vous de PowerShell .NET, de sorte que le premier indice est égal à 0

Permet de se faire une certaine répétition dans notre cible

PS:> $s = $s * 3

PS:> $s
abcdefghijkabcdefghijkabcdefghijk

Vous avez également la possibilité de choisir la DERNIÈRE occurrence de la sous-chaîne

PS:> $s.LastIndexOf(’f’)
27

PS >ss. LastIndexOfAny(aa)
31

Ce dernier est le dernier « j » de la chaîne – c’est la dernière occurrence de l’un des caractères que vous vouliez faire correspondre.

S’il n’y a pas de correspondance, vous obtenez -1 renvoyé

PS > $s.IndexOf(‘z’)
-1
PS >ss.LastIndexOf(‘z’)
-1

Publicités