Articles

PowerShell string contains

X

Prywatność & Pliki cookie

Ta strona używa plików cookie. Kontynuując, zgadzasz się na ich użycie. Dowiedz się więcej, w tym jak kontrolować pliki cookie.

mam!

reklamy

Jak sprawdzić, czy ciąg PowerShell zawiera znak lub podłańcuch?

możesz pokusić się o wypróbowanie tego:

PS> $s = 'abcdefghijk’
PS> $s-Zawiera 'f’
False

ale –zawiera służy do pracy z zawartością tablic. Możesz to zrobić:

PS> ($s.ToCharArray()) -zawiera 'f’
True

domyślnie konwertujesz łańcuch 'f’ Na aby dokonać porównania. Twoje porównanie wygląda następująco

PS> ($s.ToCharArray()) -zawiera 'f’
True

To jest dobre dla pojedynczego znaku, ale jeśli chcesz przetestować podłańcuch

PS> $s-Zawiera 'def’
False
PS> ($s.ToCharArray()) -zawiera 'def’
false

to podejście nie zadziała.

należy użyć metody Indexof

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

zwracana wartość jest pozycją pierwszego znaku w podłańcuchu.

Możesz również przetestować tablicę znaków

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

ponownie otrzymasz pierwszy znak w tym przypadku 'a’

pamiętaj, że PowerShell jest oparty na.net, więc pierwszy indeks To 0

lets get some repetition into our target

PS> $s = $S * 3

PS> $s
abcdefghijkabcdefghijkabcdefghijk

masz również opcję wybór ostatniego wystąpienia podłańcucha

PS> $s.LastIndexOf (’f’)
27

PS> $s.lastindexofany($a)
31

ten ostatni jest ostatnim’ j ’ w łańcuchu – jest to ostatnie wystąpienie któregokolwiek ze znaków, które chcesz dopasować.

Jeśli nie ma dopasowania, zwracamy -1

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

ogłoszenia