Ruby -streng inneholder en substring

Ruby -streng inneholder en substring
Strenger er grunnleggende byggesteiner i alle programmeringsspråk. Hver programmerer skal ha en solid forståelse av å jobbe med strenger og utføre komplekse operasjoner på dem.

En typisk operasjon når du arbeider med strenger er å bestemme om en streng inneholder en spesifikk substring. Du kan bruke disse metodene til å lokalisere og desinfisere innspill fra brukere, og dermed forhindre ondsinnet kode.

I denne opplæringen vil vi vise deg hvordan du kan avgjøre om en streng inneholder en spesifikk substring.

Ruby inkluderer? Metode

Den enkleste måten å finne om en spesifikk substring er i en annen streng skal bruke inkluderer? innebygd metode.

Her er et eksempel:

str = '
Info:

'
Hvis str.inkludere?("post")
Setter "Riktig HTTP -metode -> POST"
ellers
setter "feil HTTP -metode"
slutt

I eksemplet over har vi et enkelt program som inneholder informasjon fra en HTML -skjemainngang. Vi sjekker om skjemaet inneholder en postmetode ved hjelp av Include -metoden.

Siden metodens avkastningsverdi er en boolsk sann eller usant hvis henholdsvis substring er tilgjengelig eller ikke, implementerer vi en if… ellers uttalelse for å handle deretter.

Eksempelutgangen fra skriptet ovenfor er som vist:

$ Ruby Substring.RB
Riktig HTTP -metode -> Innlegg

Hvis vi erstatter formdataene og setter metoden til en get, kan vi komme til andre blokken som:

str = '
Info:

'
Hvis str.inkludere?("post")
Setter "Riktig HTTP -metode -> POST"
ellers
setter "feil HTTP -metode"
slutt

Vi kjører skriptet som:

$ Ruby Substring.RB
Feil HTTP -metode

En ulempe med inkluderer? Metode er det som er fastfølsomt. Dette betyr at post og post vil returnere en falsk verdi.

For eksempel:

Str = 'Post'
Hvis str.inkludere?("post")
Setter "Riktig HTTP -metode -> POST"
ellers
setter "feil HTTP -metode"
slutt

Hvis vi kjører eksemplet ovenfor, bør vi få en utgang fra andre blokken som:

$ Ruby Substring.RB
Feil HTTP -metode

For å overvinne dette, kan vi først konvertere hele strengen til små bokstaver eller store bokstaver, og deretter bekrefte om substringen er innenfor hovedstrengen.

Her er et eksempel:

Str = 'Post'
hvis (str.inkludere?("post".opphylle))
Setter "Riktig HTTP -metode -> POST"
ellers
setter "feil HTTP -metode"
slutt

I dette eksemplet konverterer vi substringen til store bokstaver, som samsvarer med hovedstrengen, og sjekker verdien.

$ Ruby Substring.RB
Riktig HTTP -metode -> Innlegg

Ved hjelp av regex

Vi kan bruke regex for å sjekke om en streng har en spesifikk substring. Ruby vil returnere null hvis det spesifiserte vanlige uttrykksmønsteret ikke er innenfor i strengen.

For eksempel:

str = '
Info:

'
setter str = ~ /post /

I eksemplet over bruker vi et enkelt vanlig uttrykk for å sjekke om strengen inneholder underlaget "Post".

Hvis vi kjører skriptet over, bør vi få en utgang som ligner på den nedenfor:

$ Ruby Substring.RB
33

Returverdien til det vanlige uttrykket er den første indeksen der kampsaken er funnet. I vårt eksempel starter poststrengen fra indeks 33. Vi kan bekrefte som:

str = '..
setter STR [33… 36]

I eksemplet ovenfor starter vi fra den første indeksen der det er funnet at det er indeks som samsvarer med lengden på substringen:

$ Ruby Substring.RB
post

Ruby String Element Reference []

Vi kan også bruke Ruby String Reference -metoden. Vi kan passere enten en streng, en indeksverdi eller et vanlig uttrykk i et par firkantede parenteser.

Eksempelbruk:

Str = 'Post'
setter STR ['POST']
setter STR ['Not-Found']

Hvis vi kjører eksemplet ovenfor, bør vi se en utdata som:

=> Innlegg
=> nil

Hvis substringen er tilgjengelig, vil den returnere den faktiske strengen; Imidlertid vil det returnere null hvis det ikke er noen substring.

Det samme tilfellet gjelder regelmessige uttrykk.

Str = 'Post'
Setter STR [/POST/]
=> Innlegg

Vi kan også bruke metoden ovenfor for å trekke ut en substring. For å trekke ut 10 tegn etter kampen, kan vi for eksempel gjøre:

Str = 'Post ------ String fortsetter her'
setter str [str = ~ /streng /, 9]

Eksemplet over vil hente 9 indekser etter indeksen der kampen er.

Konklusjon

I denne guiden lærte du hvordan du kan sjekke om en streng inneholder en spesifikk substring ved hjelp av inkluderer inkluderer? metode, vanlige uttrykk og strengelementreferanse.