Ruby String zawiera podłoże

Ruby String zawiera podłoże
Strings to podstawowe elementy konstrukcyjne we wszystkich językach programowania. Każdy programista powinien mieć solidne zrozumienie pracy z ciągami i wykonywać na nich złożone operacje.

Typową operacją podczas pracy z strinami jest określenie, czy ciąg zawiera określony podłoże. Możesz użyć tych metod do zlokalizowania i odkażenia danych wejściowych od użytkowników, zapobiegając w ten sposób jakiegokolwiek złośliwego kodu.

W tym samouczku pokażemy, jak ustalić, czy ciąg zawiera określony podłoże.

Ruby obejmuje? metoda

Najłatwiejszym sposobem na znalezienie, czy określony podłoże jest w innym ciągu, jest użycie? wbudowana metoda.

Oto przykład:

str = '
Informacje:

'
Jeśli str.włączać?("post")
Umieszcza „poprawna metoda HTTP -> Post”
w przeciwnym razie
Umieszcza „Niepoprawną metodę HTTP”
koniec

W powyższym przykładzie mamy prosty program zawierający informacje z wprowadzania formularza HTML. Sprawdzamy, czy formularz zawiera metodę posty przy użyciu metody dołącz.

Ponieważ wartością zwracającą metody jest boolean true lub false, jeśli podjazd jest odpowiednio dostępny, czy nie, wdrażamy oświadczenie if… else, aby działać odpowiednio.

Przykładowe dane wyjściowe z powyższego skryptu jest takie jak pokazano:

$ Ruby Substring.RB
poprawna metoda HTTP -> Post

Jeśli zastąpimy dane formularza i ustawiamy metodę na GET, możemy dostać się do bloku innego jako:

str = '
Informacje:

'
Jeśli str.włączać?("post")
Umieszcza „poprawna metoda HTTP -> Post”
w przeciwnym razie
Umieszcza „Niepoprawną metodę HTTP”
koniec

Uruchamiamy skrypt jako:

$ Ruby Substring.RB
Niepoprawna metoda HTTP

Jedna wada w tym? Metoda polega na tym, że jest wrażliwy na sprawę. Oznacza to, że post i post zwrócą fałszywą wartość.

Na przykład:

str = 'post'
Jeśli str.włączać?("post")
Umieszcza „poprawna metoda HTTP -> Post”
w przeciwnym razie
Umieszcza „Niepoprawną metodę HTTP”
koniec

Jeśli uruchomimy powyższy przykład, powinniśmy uzyskać dane wyjściowe z bloku innego jako:

$ Ruby Substring.RB
Niepoprawna metoda HTTP

Aby to przezwyciężyć, możemy najpierw przekonwertować cały ciąg na niższy przypadek lub wielki poziom, a następnie sprawdzić, czy podłoże znajduje się w ciągu głównego ciągu.

Oto przykład:

str = 'post'
if (str.włączać?("post".Upcase))
Umieszcza „poprawna metoda HTTP -> Post”
w przeciwnym razie
Umieszcza „Niepoprawną metodę HTTP”
koniec

W tym przykładzie konwertujemy podłoże na upjąc, który pasuje do głównego ciągu, i sprawdzamy wartość.

$ Ruby Substring.RB
poprawna metoda HTTP -> Post

Za pomocą Regex

Możemy użyć Regex, aby sprawdzić, czy ciąg trzyma określony podłoże. Ruby zwróci zero, jeśli określony wzór wyrażenia regularnego nie znajduje się w ciągu.

Na przykład:

str = '
Informacje:

'
Umieszcza Str = ~ /Post /

W powyższym przykładzie używamy prostego wyrażenia regularnego, aby sprawdzić, czy ciąg zawiera podłoże „Post”.

Jeśli uruchomimy skrypt powyżej, powinniśmy uzyskać wyjście podobne do tego poniżej:

$ Ruby Substring.RB
33

Wartość zwracana wyrażenia regularnego jest początkowym indeksem, w którym znajduje się przypadek dopasowania. W naszym przykładzie ciąg postu zaczyna się od indeksu 33. Możemy zweryfikować jako:

str = '…
Umieszcza STR [33… 36]

W powyższym przykładzie zaczynamy od początkowego indeksu, w którym stwierdzono, że ciąg w indeksowaniu odpowiadający długości podłoża:

$ Ruby Substring.RB
post

Ruby String Element Reference []

Możemy również użyć metody odniesienia Ruby String. Możemy przekazać ciąg, wartość indeksu lub wyrażenie regularne w parach kwadratowych nawiasów.

Przykładowe użycie:

str = 'post'
umieszcza STR [„post”]
Umieszcza STR [„nie odkryte”]

Jeśli uruchomimy powyższy przykład, powinniśmy zobaczyć dane wyjściowe jako:

=> Post
=> zero

Jeśli podłoże jest dostępne, zwróci rzeczywisty ciąg; Jednak zwróci zero, jeśli nie ma podrzędu.

Ten sam przypadek dotyczy wyrażeń regularnych.

str = 'post'
Umieszcza STR [/post/]
=> Post

Możemy również użyć powyższej metody do wyodrębnienia podrzędnego. Na przykład, aby wyodrębnić 10 znaków po meczu, możemy zrobić:

str = 'post ------ ciąg trwa tutaj'
Umieszcza str [str = ~ /string /, 9]

Powyższy przykład pobiera 9 indeksów po indeksie, w którym jest dopasowanie.

Wniosek

W tym przewodniku nauczyłeś się sprawdzić, czy ciąg zawiera określony podłoże za pomocą włączania? Metoda, wyrażenia regularne i odniesienie do elementów ciągów.