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 = '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.RBHvis vi erstatter formdataene og setter metoden til en get, kan vi komme til andre blokken som:
str = 'Vi kjører skriptet som:
$ Ruby Substring.RBEn 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 vi kjører eksemplet ovenfor, bør vi få en utgang fra andre blokken som:
$ Ruby Substring.RBFor å 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'I dette eksemplet konverterer vi substringen til store bokstaver, som samsvarer med hovedstrengen, og sjekker verdien.
$ Ruby Substring.RBVed 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 = '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.RBReturverdien 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 = '..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.RBRuby 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'Hvis vi kjører eksemplet ovenfor, bør vi se en utdata som:
=> InnleggHvis 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'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'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.