PowerShell-tekenreeks bevat
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.
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
Leave a Reply