Articles

PowerShell obsahuje řetězec

X

Soukromí & soubory Cookie

Tento web používá soubory cookie. Pokračováním souhlasíte s jejich použitím. Další informace, včetně toho, jak ovládat soubory cookie.

Mám to!

reklamy

jak můžete zkontrolovat, zda řetězec PowerShell obsahuje znak nebo podřetězec?

můžete být v pokušení to zkusit:

PS> $s = ‚abcdefghijk‘
PS> $s -obsahuje ‚f‘
False

Ale –obsahuje, je pro práci s obsahem pole. Tak můžeš udělat toto:

PS> ($s.ToCharArray()) -obsahuje ‚f‘
True

Jste implicitně převod řetězce „f“, aby se srovnání. Vaše srovnání je vlastně toto

PS ($s.ToCharArray()) -obsahuje ‚f‘
True

to je v pořádku pro jeden znak, ale pokud si chcete vyzkoušet řetězec,

PS> $s -obsahuje ‚def‘
False
PS> ($s.ToCharArray()) -obsahuje ‚def‘
False

tento přístup nebude fungovat.

musíte použít Indexof metoda,

PS> $s.Indexof („f“)
5
PS> $s.Indexof(‚def‘)
3.

vrácená hodnota je pozice PRVNÍHO znaku v názvu podřetězec.

můžete také testovat pole znaků

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

Opět se dostanete na PRVNÍ znak v tomto případě se ‚a‘

Pamatujte si, PowerShell je .NET založené takže první index je 0,

Umožňuje získat nějaké opakování do našeho cíle,

PS> $y = $y * 3,

PS> $s
abcdefghijkabcdefghijkabcdefghijk

máte také možnost vybrat POSLEDNÍ výskyt podřetězce

PS> $s.LastIndexOf („f“)
27

PS> $s.LastIndexOfAny($a)
31

Tento poslední je poslední, “ j “ v řetězci – jeho poslední výskyt libovolného ze znaků jste chtěli, aby odpovídaly.

Pokud není zápas dostanete -1 vrátil

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

Inzeráty