Natrag na blog

Rad sa stringovima u Rubyju

Rad sa stringovima u Rubyju

Ruby je interpretirani, dinamični, refleksivni, objektno-orijentirani programski jezik. Razvio ga je Yukihiro Matsumoto, a Ruby se fokusira na jednostavnost i produktivnost. Elegantna sintaksa omogućuje programerima lakše čitanje i pisanje koda.

U ovom vodiču, radit ćemo s nizovima znakova u Rubyju.

Preduvjeti

Za izvođenje koraka prikazanih u ovom vodiču potrebne su vam sljedeće komponente:

Tip podataka String

U programiranju, string je uobičajeni tip podataka koji podržava svaki moderni programski jezik. Karakterizira ga slijed znakova. Cijeli slijed znakova tretira se kao jedan podatak. Niz znakova može sadržavati slova, znamenke i posebne znakove/simbole.

Ruby, kao čisti objektno-orijentirani programski jezik, tretira nizove znakova kao objekte. Za razliku od mnogih drugih jezika, nizovi znakova u Rubyju su promjenjivi. Uglavnom, vrijednost niza znakova može se promijeniti na licu mjesta.

Korak 1 – Stvaranje i ispisivanje nizova znakova

U Rubyju, nizovi znakova su obavijeni jednostrukim navodnicima ( ') ili dvostrukim navodnicima ( "). Sljedeća dva su valjana niza znakova u Rubyju:

Za ispis bilo kojeg izlaza na zaslon konzole, Ruby dolazi s metodom print:

Vrijeme je da to primijenimo u praksi. Stvorite novu Ruby datoteku practice.rb i unesite sljedeći kod:

Pokrenite kod:

Strings in Ruby 1

Kao što se i očekivalo, naredba print ispisuje pružene nizove znakova. Ako želimo ispisati nizove znakova u zasebnim redcima, bolje je koristiti puts umjesto toga. Ažurirajte kod:

Zatim ponovno pokrenite kod:

Strings in Ruby 2

Korak 2 – Varijable niza znakova

Varijable su nazivi koji se odnose na određeno mjesto u računalnoj memoriji gdje je pohranjena vrijednost. Željenu vrijednost možemo pohraniti u varijablu i koristiti je kasnije.

U Rubyju, za deklariranje varijable niza znakova, definirajte naziv varijable i dodijelite vrijednost niza znakova:

Napišite sljedeći kod u practice.rb:

Pokrenite kod:

Ovdje:

  • Definirali smo dvije varijable first_half i second_half, od kojih je svakoj dodijeljena vrijednost niza znakova.
  • Metoda puts ispisuje vrijednost varijabli.

Korak 3 – Spajanje nizova znakova

Spajanjem možemo uzeti više nizova znakova i spojiti ih kako bismo stvorili novi niz znakova. Spajanje nizova znakova označava se operatorom spajanja ( +). Imajte na umu da je ovaj simbol također operator zbrajanja kada radite s aritmetičkim operacijama.

Pokušajmo izvesti spajanje nizova znakova na nizovima koje smo do sada deklarirali:

Pokrenite kod:

Kao što izlaz pokazuje, spajanje ne uvodi nikakav dodatni znak između nizova. Zato su fox i jumps spojeni zajedno. To možemo popraviti uvođenjem razmaka nakon fox:

Pokrenite kod:

Sada izlaz izgleda bolje.

Spajanje nizova znakova također radi s varijablama. Pogledajte sljedeći primjer:

Strings in Ruby 3

Pokrenite kod:

Sljedeći primjer prikazuje dugačak lanac spajanja:

Strings in Ruby 4

Pokrenite kod:

Do sada smo se bavili samo tekstualnim varijablama (stringovima). Što ako postoje različite vrste varijabli? Sljedeći program testira ovaj scenarij:

Strings in Ruby 5

Pri pokušaju pokretanja ovog programa, Ruby će javiti pogrešku:

Međutim, možemo pretvoriti cijeli broj u string kako bismo izbjegli ovaj problem:

Strings in Ruby 6

Ovdje:

  • Metoda to_s pretvara vrijednost varijable u string.

Pretvaranje brojeva u stringove uobičajena je pojava kada se radi s elementima kao što su poštanski brojevi, valuta, telefonski brojevi i drugi numerički podaci.

Step 4 – Interpolacija stringova

Iako je spajanje stringova moćna značajka, vrlo lako može postati komplicirano. U mnogim situacijama vjerojatno ćete primijetiti da vam nedostaje operator spajanja ( +), što dovodi do velike glavobolje. Štoviše, kada radite s različitim tipovima podataka, oni se prvo moraju pretvoriti u string. Srećom, Ruby nudi druge načine umetanja vrijednosti varijabli u string pomoću značajke interpolacije stringova.

Evo kako to izgleda. Na primjer, umjesto korištenja:

Koristit ćemo:

Iako sintaksa može izgledati malo čudno, ona dramatično pojednostavljuje kod. Nema potrebe za ručnim pozivanjem metode to_s za pretvaranje vrijednosti varijable u string.

Upotrijebimo ovu novu tehniku za ažuriranje našeg prethodnog koda:

Strings in Ruby 7

Pokrenite kod:

Step 5 – Literali stringova i vrijednosti stringova

Primijetite da su stringovi deklarirani u kodu uvijek okruženi navodnicima. Međutim, kada se ispisuje izlaz na zaslon konzole, nema navodnika. Jasno postoji razlika između njih.

  • Literal stringa: To je string napisan u izvornom kodu (uključujući navodnike).
  • Vrijednost stringa: To je vrijednost koja se ispisuje na izlazu (bez navodnika).

Na primjer, sljedeći je literal stringa:

Njegova vrijednost stringa bila bi pozdrav svijete.

Step 6 – Izbjegavanje navodnika i apostrofa

Kao što smo pokazali, navodnici i apostrofi koriste se za označavanje stringova u izvornom kodu. To stvara problem: ne možete ih imati izravno u stringu. U suprotnom će to uzrokovati probleme. Sljedeći kod to demonstrira:

Strings in Ruby 8

Postoje različite taktike za zaobilaženje ovog problema.

  • Korištenje alternativne sintakse stringa

Ovo je najjednostavniji način za rješavanje ovog problema. Ako vaš string treba jednostruke navodnike, upotrijebite dvostruke navodnike u literalu stringa (i obrnuto).

Popravimo prethodni primjer:

Drugi primjer bio bi:

Međutim, to neće raditi u svakoj situaciji. Na primjer:

  • Korištenje izlaznih znakova (escape characters)

Kosa crta unazad ( \) se često naziva izlaznim znakom (escape character). On sprječava Ruby da doslovno interpretira sljedeći znak. Popravimo prethodni primjer. Upotrijebite kosu crtu unazad kako biste spriječili Ruby da interpretira unutarnje dvostruke navodnike kao literale:

  • Korištenje alternativne sintakse

Do sada smo radili samo s jednostrukim i dvostrukim navodnicima za označavanje znakovnog literala. Međutim, prethodni primjeri su jednostavni prikazi kako to vrlo brzo može izmaći kontroli. Kako bismo riješili ovaj problem, možemo u potpunosti odbaciti navodnike i upotrijebiti potpuno drugačiji simbol za označavanje početka i kraja niza.

Pogledajte sljedeći primjer:

Ovdje:

    • Simbol % definira sljedeći znak ( $, u ovom slučaju) kao graničnik niza.
    • Znakovni literal ovdje je $ta brza smeđa lisica je rekla, "preskočio sam lijenog psa"$.

Stavimo to u akciju:

Ovdje se niz u osnovi tretira kao sljedeće:

Međutim, to ponovno uvodi problem izbjegavanja (escaping) graničnika ako se on koristi u nizu. Jedan od načina da se to izbjegne je korištenje simbola koji se općenito ne pojavljuju u nizovima znakova. Takvi simboli mogu uključivati vitičaste zagrade, uglate zagrade itd.:

Također savršeno radi s interpolacijama niza:

Također je uobičajeno koristiti %Q{} i % i {} za definiranje nizova u Ruby programima. Ovdje, %Q{} djeluje kao dvostruki navodnici, a %q{} djeluje kao jednostruki navodnici.

Korak 7 – Novi redovi i dugi nizovi

Kada radite s nizovima znakova, bit će situacija u kojima ćete htjeti uvesti novi red (newline) ili povratak na početak reda (carriage return) u niz. To možemo učiniti uvođenjem escape znakova \n (novi red) i \r (povratak na početak reda).

Pogledajte sljedeći primjer:

Znakovni literal izgleda zbunjujuće, zar ne? Presložimo ga radi bolje čitljivosti:

Umjesto ručnog deklariranja znakova novog reda, možemo koristiti i sljedeću strukturu:

Strings in Ruby 8

Strings in Ruby 9

U ovoj metodi, niz čuva sve razmake. Međutim, to kvari ispis. Uklonite suvišne razmake kako biste to popravili:

Strings in Ruby 10

Iako je problem s razmacima riješen, to smanjuje čitljivost koda. Ovaj problem možemo riješiti implementacijom heredoc, što je izraz za višeredne znakovne literale. Ažurirani kod bi izgledao ovako:

Strings in Ruby 11

Strings in Ruby 12

Počevši od verzije Ruby v2.3 i novije, dostupna je još jedna značajka, nazvana squiggly heredoc sintaksa. Ona uklanja početne razmake u nizovima. Za izražavanje squiggly heredoc-a, zamijenite crticu ( -) tildom ( ~):

Strings in Ruby 13

Korak 8 – Repliciranje stringova

U nekim situacijama može biti potrebno ponoviti string nekoliko puta. Ruby omogućuje repliciranje stringova na različite načine.

Jedna takva tehnika je korištenje * operatora. Općenito se koristi kao operator množenja kada se radi s brojevima. Međutim, kada se radi sa stringovima, on postaje operator za repliciranje stringova, ponavljajući jedan string onoliko puta koliko je potrebno. Broj ponavljanja mora biti cijeli broj.

U sljedećem primjeru, tekst Boris će se ponoviti 5 puta:

Strings in Ruby 14

Koristeći ovu značajku, možemo stvoriti zanimljivu ASCII umjetnost. Pogledajte sljedeći primjer:

Završne misli

Stringovi su u programiranju ključni. Ovaj vodič prikazuje rad sa stringovima u Rubyju. Naučili smo kako stvarati stringove i izvoditi različite operacije poput spajanja, rukovanja novim redovima, navodnicima itd. Koristeći interpolaciju stringova, također smo naučili kako bolje integrirati vrijednosti varijabli u stringove. Koristeći operator za repliciranje stringova, također možemo ponoviti jedan string više puta.

Iako je Ruby sam po sebi izvrstan programski jezik, često se kombinira s Rails okvirom. Ruby on Rails je web-okvir otvorenog koda. Saznajte više o instalaciji Ruby on Rails na Ubuntuu. Međutim, Ruby također može raditi s drugim aplikacijama, poput MySQL i PostgreSQL.

Sretno programiranje!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativni dizajner u CloudSigma, usredotočen na dosljedan poslovni identitet korištenjem tradicionalnih i inovativnih marketinških kanala. Vješt je u spajanju umjetničke vizije sa strateškim marketingom kako bi stvorio dojmljive brendirane priče.

Komentari

Još nema komentara. Budite prvi.