Articles

PowerShell-strängen innehåller

X

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.

fick det!

annonser

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

annonser

>