Späť na blog

Práca s reťazcami v Ruby

Práca s reťazcami v Ruby

Ruby je interpretovaný, dynamický, reflektívny, objektovo orientovaný programovací jazyk. Vyvinutý Yukihirom Matsumotom, Ruby sa zameriava na jednoduchosť a produktivitu. Elegantná syntax umožňuje vývojárom jednoduchšie čítať a písať kód.

V tejto príručke budeme pracovať s reťazcami v Ruby.

Požiadavky

Na vykonanie krokov demonštrovaných v tomto návode potrebujete nasledujúce komponenty:

Dátový typ String

V programovaní je reťazec bežný dátový typ, ktorý podporuje každý moderný programovací jazyk. Je charakterizovaný postupnosťou znakov. Celá postupnosť znakov sa považuje za jediný údaj. Reťazec môže obsahovať písmená, číslice a špeciálne znaky/symboly.

Ruby, ako čisto objektovo orientovaný programovací jazyk, považuje reťazce za objekty. Na rozdiel od mnohých iných jazykov sú reťazce v Ruby meniteľné. V zásade je možné hodnotu reťazca zmeniť priamo na mieste.

Krok 1 – Vytváranie a tlačenie reťazcov

V Ruby sú reťazce obklopené buď jednoduchými úvodzovkami ( ') alebo dvojitými úvodzovkami ( "). Nasledujú dva platné reťazce v Ruby:

Na vytlačenie akéhokoľvek výstupu na obrazovku konzoly prichádza Ruby s metódou print:

Je čas uviesť to do praxe. Vytvorte nový súbor Ruby practice.rb a zadajte nasledujúce kódy:

Spustite kód:

Strings in Ruby 1

Podľa očakávania príkaz print vytlačí poskytnuté reťazce. Ak chceme reťazce vytlačiť na samostatné riadky, je lepšie použiť puts namiesto toho. Aktualizujte kód:

Ďalej znova spustite kód:

Strings in Ruby 2

Krok 2 – Reťazcové premenné

Premenné sú názvy odkazujúce na konkrétne miesto v pamäti počítača, kde je uložená hodnota. Požadovanú hodnotu môžeme uložiť do premennej a použiť ju neskôr.

V Ruby na deklarovanie reťazcovej premennej definujte názov premennej a priraďte hodnotu reťazca:

Napíšte nasledujúci kód do practice.rb:

Spustite kód:

Tu:

  • Definovali sme dve premenné first_half a second_half, pričom každej bola priradená hodnota reťazca.
  • Metóda puts vytlačí hodnotu premenných.

Krok 3 – Spájanie reťazcov

Spájaním môžeme vziať viacero reťazcov a spojiť ich dohromady, čím vytvoríme nový reťazec. Spájanie reťazcov je označené operátorom spájania ( +). Upozorňujeme, že tento symbol je tiež operátorom sčítania pri práci s aritmetickými operáciami.

Skúsme vykonať spájanie reťazcov na reťazcoch, ktoré sme doteraz deklarovali:

Spustite kód:

Ako ukazuje výstup, spájanie nevkladá medzi reťazce žiadny ďalší znak. Preto sú fox a jumps spojené dokopy. Môžeme to napraviť vložením medzery za fox:

Spustite kód:

Teraz vyzerá výstup lepšie.

Spájanie reťazcov funguje aj s premennými. Pozrite sa na nasledujúci príklad:

Strings in Ruby 3

Spustite kód:

Nasledujúci príklad ukazuje dlhý reťazec spájania:

Strings in Ruby 4

Spustite kód:

Doteraz sme pracovali iba s reťazcovými premennými. Čo ak by existovali rôzne typy premenných? Nasledujúci program testuje tento scenár:

Strings in Ruby 5

Pri pokuse o spustenie tohto programu Ruby vyhodí chybové hlásenie:

Tento problém však môžeme vyriešiť konverziou celého čísla na reťazec:

Strings in Ruby 6

Tu:

  • Metóda to_s konvertuje hodnotu premennej na reťazec.

Konverzia čísel na reťazce je bežným javom pri práci s prvkami, ako sú PSČ, mena, telefónne čísla a iné číselné údaje.

Krok 4 – Interpolácia reťazcov

Hoci je spájanie reťazcov výkonná funkcia, môže sa veľmi ľahko skomplikovať. V mnohých situáciách pravdepodobne zistíte, že vám chýba operátor spájania ( +), čo vedie k veľkým nepríjemnostiam. Navyše pri práci s rôznymi dátovými typmi je potrebné ich najprv skonvertovať na reťazec. Našťastie Ruby ponúka iné spôsoby vkladania hodnôt premenných do reťazca pomocou funkcie interpolácia reťazcov.

Takto to vyzerá. Napríklad namiesto použitia:

Budeme používať:

Aj keď syntax môže vyzerať trochu zvláštne, dramaticky zjednodušuje kód. Nie je potrebné manuálne volať metódu to_s na konverziu hodnoty premennej na reťazec.

Použime túto novú techniku na aktualizáciu nášho predchádzajúceho kódu:

Strings in Ruby 7

Spustite kód:

Krok 5 – Reťazcové literály a reťazcové hodnoty

Všimnite si, že reťazce deklarované v kódoch sú vždy obklopené úvodzovkami. Pri výpise na obrazovku konzoly sa však žiadne úvodzovky nezobrazujú. Je medzi nimi jasný rozdiel.

  • Reťazcový literál: Je to reťazec zapísaný v zdrojovom kóde (vrátane úvodzoviek).
  • Reťazcová hodnota: Je to hodnota, ktorá sa vytlačí na výstupe (bez úvodzoviek).

Napríklad nasledujúci príklad je reťazcový literál:

Jeho reťazcová hodnota by bola ahoj svet.

Krok 6 – Escapovanie úvodzoviek a apostrofov

Ako sme ukázali, úvodzovky a apostrofy sa používajú na označenie reťazcov v zdrojovom kóde. To predstavuje problém: nemôžete ich mať priamo v reťazci. V opačnom prípade to spôsobí problémy. Nasledujúci kód to demonštruje:

Strings in Ruby 8

Existujú rôzne taktiky, ako tento problém obísť.

  • Použitie alternatívnej syntaxe reťazcov

Toto je najjednoduchší spôsob, ako obísť tento problém. Ak váš reťazec vyžaduje jednoduché úvodzovky, použite v reťazcovom literáli dvojité úvodzovky (a naopak).

Opravme predchádzajúci príklad:

Ďalším príkladom by mohlo byť:

Nebude to však fungovať v každej situácii. Napríklad:

  • Použitie escape znakov

Spätná lomka ( \) sa často označuje ako escape znak. Zabraňuje tomu, aby Ruby interpretoval nasledujúci znak doslovne. Opravme predchádzajúci príklad. Použite spätnú lomku, aby ste zabránili tomu, aby Ruby interpretoval vnútorné dvojité úvodzovky ako literály:

  • Použitie alternatívnej syntaxe

Doteraz sme pracovali iba s jednoduchými a dvojitými úvodzovkami na označenie reťazcového literálu. Predchádzajúce príklady sú však jednoduchou ukážkou toho, ako sa to môže veľmi rýchlo vymknúť spod kontroly. Na vyriešenie tohto problému môžeme úvodzovky úplne vynechať a použiť úplne iný symbol na označenie začiatku a konca reťazca.

Pozrite sa na nasledujúci príklad:

Tu:

    • Symbol % definuje nasledujúci znak ( $, v tomto prípade) ako oddeľovač reťazca.
    • Reťazcový literál je tu $rýchla hnedá líška povedala, "preskočil som lenivého psa"$.

Poďme to uviesť do praxe:

Tu sa s reťazcom v podstate zaobchádza nasledovne:

Znovu to však prináša problém s escapovaním oddeľovača, ak sa používa v reťazci. Jedným zo spôsobov, ako sa tomu vyhnúť, je použitie symbolov, ktoré sa v reťazcoch zvyčajne nevyskytujú. Takéto symboly môžu zahŕňať zložené zátvorky, hranaté zátvorky atď.:

Funguje to tiež perfektne s interpoláciou reťazcov:

V programoch v jazyku Ruby je tiež bežné používať %Q{} a %q{} na definovanie reťazcov. Tu %Q{} funguje ako dvojité úvodzovky a %q{} funguje ako jednoduché úvodzovky.

Krok 7 – Nové riadky a dlhé reťazce

Pri práci s reťazcami nastanú situácie, keď budete chcieť do reťazca vložiť nový riadok alebo návrat vozíka (carriage return). Môžeme to urobiť vložením escape znakov \n (nový riadok) a \r (návrat vozíka).

Pozrite sa na nasledujúci príklad:

Tento reťazcový literál vyzerá mätúco, však? Upravme ho pre lepšiu čitateľnosť:

Namiesto manuálneho deklarovania znakov nového riadka môžeme použiť aj nasledujúcu štruktúru:

Strings in Ruby 8

Strings in Ruby 9

Pri tejto metóde si reťazec zachová všetky biele znaky. To však narúša výstup. Odstráňte prebytočné biele znaky, aby ste to opravili:

Strings in Ruby 10

Hoci sa problém s bielymi znakmi vyriešil, znižuje to čitateľnosť kódu. Tento problém môžeme vyriešiť implementáciou heredoc, čo je výraz pre viacriadkové reťazcové literály. Aktualizovaný kód by vyzeral takto:

Strings in Ruby 11

Strings in Ruby 12

Počnúc verziou Ruby v2.3 a novšou je k dispozícii ďalšia funkcia s názvom vlnovkový heredoc syntax. Odstraňuje počiatočné biele znaky v reťazcoch. Na vyjadrenie vlnovkového heredoc nahraďte spojovník ( -) vlnovkou ( ~):

Strings in Ruby 13

Krok 8 – Replikácia reťazcov

V niektorých situáciách môže byť potrebné zopakovať reťazec niekoľkokrát. Ruby umožňuje replikovať reťazce rôznymi spôsobmi.

Jednou z takýchto techník je použitie * operátora. Vo všeobecnosti sa používa ako operátor násobenia pri práci s číslami. Pri práci s reťazcami sa však stáva operátorom replikácie reťazca, ktorý opakuje jeden reťazec toľkokrát, koľkokrát je to potrebné. Počet opakovaní musí byť celé číslo.

V nasledujúcom príklade sa text Boris zopakuje 5-krát:

Strings in Ruby 14

Pomocou tejto funkcie môžeme vytvoriť zaujímavé ASCII umenie. Pozrite si nasledujúci príklad:

Záver

Reťazce sú v programovaní kľúčové. Táto príručka demonštruje prácu s reťazcami v jazyku Ruby. Naučili sme sa, ako vytvárať reťazce a vykonávať rôzne operácie, ako je spájanie (konkatenácia), spracovanie nových riadkov, úvodzoviek atď. Pomocou interpolácie reťazcov sme sa tiež naučili, ako lepšie integrovať hodnoty premenných do reťazcov. Pomocou operátora replikácie reťazcov môžeme tiež viackrát zopakovať jeden reťazec.

Hoci samotný Ruby je vynikajúci programovací jazyk, často sa kombinuje s frameworkom Rails. Ruby on Rails je open-source framework pre webové aplikácie. Prečítajte si viac o inštalácii Ruby on Rails na Ubuntu. Ruby však môže spolupracovať aj s inými aplikáciami, ako sú MySQL a PostgreSQL.

Príjemné programovanie!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreatívny dizajnér v spoločnosti CloudSigma, ktorý sa zameriava na konzistentnú firemnú identitu prostredníctvom tradičných a inovatívnych marketingových kanálov. Dokáže brilantne spájať umeleckú víziu so strategickým marketingom, čím vytvára pôsobivé príbehy značky.

Komentáre

Zatiaľ žiadne komentáre. Buďte prvý.