Articles

PowerShell-tekenreeks bevat

X

Privacy & Cookies

deze site maakt gebruik van cookies. Door verder te gaan, gaat u akkoord met het gebruik ervan. Meer informatie, waaronder het beheren van cookies.

heb het!

advertenties

Hoe kunt u controleren of een PowerShell-tekenreeks een teken of substring bevat?

u zou in de verleiding kunnen komen om dit te proberen:

PS> $s = ‘abcdefghijk’
PS> $s-bevat ‘f’
False

maar –bevat is voor het werken met de inhoud van arrays. U kunt dit doen:

PS> ($s.ToCharArray()) -bevat ‘f’
True

u converteert impliciet De tekenreeks ‘f’ om de vergelijking te maken. Uw vergelijking is eigenlijk deze

PS> ($s.ToCharArray()) -bevat ‘f’
True

Dat is prima voor een enkel teken, maar als u wilt testen of een substring

PS> $s -bevat ‘def’
False
PS> ($s.ToCharArray()) -bevat ‘def’
False

Dat de aanpak niet werkt.

u moet de Indexof-methode gebruiken

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

de waarde die wordt geretourneerd is de positie van het eerste teken in de substring.

Je kunt ook het testen van een serie van karakters

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

Weer krijg je het EERSTE teken is in dit geval de ‘a’

Vergeet niet PowerShell is .NETTO-gebaseerd, wat betekent dat de eerste index is 0

Laat je een aantal herhalingen in voor onze doelgroep

PS> $s = $s * 3

PS> $s
abcdefghijkabcdefghijkabcdefghijk

Je hebt ook de optie van het kiezen van het LAATSTE exemplaar van de substring

PS> $s.Lastindex ofany (‘f’)
27

PS> $s.Lastindex Ofany ($a)
31

Deze laatste is de laatste’ j ‘ in de tekenreeks – het is de laatste voorkomen van een van de tekens die u wilt matchen.

als er geen overeenkomst is krijg je -1 returned

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

advertenties