PowerShell-strängen innehåller
Sekretess &Cookies
den här webbplatsen använder cookies. Genom att fortsätta godkänner du deras användning. Läs mer, inklusive hur du kontrollerar cookies.
hur kan du kontrollera om en PowerShell-sträng innehåller ett tecken eller en substring?
Du kan bli frestad att prova detta:
PS >$s = ’abcdefghijk’
PS>$s-innehåller ’f’
False
men –innehåller är för att arbeta med innehållet i arrayer. Så du kan göra det här:
PS> ($s.ToCharArray()) -innehåller ’f’
True
du konverterar implicit strängen ’f’ till för att göra jämförelsen. Din jämförelse är faktiskt detta
PS> ($s.ToCharArray()) -innehåller ’f’
True
det är bra för ett enda tecken, men om du vill testa en substring
PS> $s-innehåller ’def’
False
PS> ($s.ToCharArray()) -innehåller ’Def’
False
PS > ($s.Tochararray ()) – innehåller ’ Def ’
False
den metoden fungerar inte.
Du måste använda Indexof-metoden
PS > $s.Indexof(’f’)
5
PS> $s.Indexof(’def’)
3
värdet som returneras är positionen för det första tecknet i substringen.
Du kan också testa en rad tecken
PS> $a = ’g’,’j’,’a’
PS> $s.IndexOfAny($a)
0
återigen får du det första tecknet i detta fall ’A’
kom ihåg PowerShell är.net baserat så det första indexet är 0
låt oss få lite upprepning i vårt mål
ps> $s = $s * 3
ps> $s
abcdefghijkabcdefghijk
Du kan också har möjlighet att plocka den sista förekomsten av substring
ps> $s.Lastindexofany (’f’)
27
PS> $s.LastIndexOfAny ($a)
31
den här sista är den sista ” j ” i strängen – det är den sista förekomsten av något av de tecken du ville matcha.
om det inte finns någon matchning får du -1 returnerade
PS> $s.IndexOf(’z’)
-1
PS> $s.LastIndexOf(’z’)
-1
>
Leave a Reply