Zpět na blog

Práce s řetězci v Ruby

Práce s řetězci v Ruby

Ruby je interpretovaný, dynamický, reflektivní, objektově orientovaný programovací jazyk. Ruby, který vyvinul Yukihiro Matsumoto, se zaměřuje na jednoduchost a produktivitu. Elegantní syntaxe umožňuje vývojářům snadněji číst a psát kód.

V tomto návodu budeme pracovat s řetězci v Ruby.

Požadavky

K provedení kroků ukázaných v tomto návodu potřebujete následující komponenty:

Datový typ řetězec

V programování je řetězecběžný datový typ, který podporuje každý moderní programovací jazyk. Je charakterizován posloupností znaků. Celá posloupnost znaků je považována za jediný datový prvek. Řetězec může obsahovat písmena, číslice a speciální znaky/symboly.

Ruby, jakožto čistě objektově orientovaný programovací jazyk, považuje řetězce za objekty. Na rozdíl od mnoha jiných jazyků jsou řetězce v Ruby měnitelné. Hodnotu řetězce lze v zásadě změnit přímo na místě.

Krok 1 – Vytváření a tisk řetězců

V Ruby jsou řetězce ohraničeny buď jednoduchými uvozovkami ( ') nebo dvojitými uvozovkami ( "). Následující dva řetězce jsou v Ruby platné:

Pro výpis jakéhokoli výstupu na obrazovku konzole má Ruby k dispozici print metodu:

Je čas uvést to do praxe. Vytvořte nový Ruby soubor practice.rb a zadejte následující kód:

Spusťte kód:

Strings in Ruby 1

Podle očekávání print příkaz vypíše zadané řetězce. Pokud chceme řetězce vypsat na samostatné řádky, je lepší použít puts namísto toho. Aktualizujte kód:

Poté kód spusťte znovu:

Strings in Ruby 2

Krok 2 – Řetězcové proměnné

Proměnné jsou názvy odkazující na konkrétní místo v paměti počítače, kde je uložena hodnota. Požadovanou hodnotu můžeme uložit do proměnné a použít ji později.

V Ruby deklarujete řetězcovou proměnnou tak, že definujete název proměnné a přiřadíte jí řetězcovou hodnotu:

Napište následující kód do practice.rb:

Spusťte kód:

Zde:

  • Definovali jsme dvě proměnné first_half a second_half, přičemž každé z nich je přiřazena řetězcová hodnota.
  • Metoda puts metoda vypíše hodnotu proměnných.

Krok 3 – Zřetězení řetězců

Zřetězením můžeme vzít více řetězců a spojit je dohromady, abychom vytvořili nový řetězec. Zřetězení řetězců je označeno operátorem zřetězení ( +). Všimněte si, že tento symbol je také operátorem sčítání při práci s aritmetickými operacemi.

Zkusme provést zřetězení řetězců na řetězcích, které jsme dosud deklarovali:

Spusťte kód:

Jak ukazuje výstup, zřetězení nevkládá mezi řetězce žádný znak navíc. Proto fox a jumps jsou spojeny dohromady. Můžeme to napravit vložením mezery za fox:

Spusťte kód:

Nyní vypadá výstup lépe.

Zřetězení řetězců funguje také s proměnnými. Podívejte se na následující příklad:

Strings in Ruby 3

Spusťte kód:

Následující příklad ukazuje dlouhý řetězec zřetězení:

Strings in Ruby 4

Spusťte kód:

Zatím jsme se zabývali pouze řetězcovými proměnnými. Co kdyby existovaly různé typy proměnných? Následující program tento scénář otestuje:

Strings in Ruby 5

Při pokusu o spuštění tohoto programu Ruby vyhodí chybovou zprávu:

Nicméně, abychom se tomuto problému vyhnuli, můžeme celé číslo převést na řetězec:

Strings in Ruby 6

Zde:

  • Metoda to_spřevede hodnotu proměnné na řetězec.

Převod čísel na řetězce je běžným jevem při práci s prvky, jako jsou PSČ, měna, telefonní čísla a další číselná data.

Krok 4 – Interpolace řetězců

Ačkoli je spojování řetězců mocná funkce, může se velmi snadno zkomplikovat. V mnoha situacích pravděpodobně zjistíte, že vám chybí operátor spojování ( +), což vede k velkým nepříjemnostem. Navíc při práci s různými datovými typy je nutné je nejprve převést na řetězec. Naštěstí Ruby nabízí jiné způsoby vkládání hodnot proměnných do řetězce pomocí funkce interpolace řetězců.

Takhle to vypadá. Například místo použití:

Budeme používat:

I když může syntaxe vypadat trochu zvláštně, dramaticky zjednodušuje kód. Není nutné ručně volat to_s metodu pro převod hodnoty proměnné na řetězec.

Pojďme použít tuto novou techniku k aktualizaci našeho předchozího kódu:

Strings in Ruby 7

Spusťte kód:

Krok 5 – Řetězcové literály a řetězcové hodnoty

Všimněte si, že řetězce deklarované v kódu jsou vždy obklopeny uvozovkami. Při výpisu výstupu na obrazovku konzole se však uvozovky nezobrazují. Je mezi nimi jasný rozdíl.

  • Řetězcový literál: Je to řetězec zapsaný ve zdrojovém kódu (včetně uvozovek).
  • Řetězcová hodnota: Je to hodnota, která se vypíše na výstup (bez uvozovek).

Například následující je řetězcový literál:

Jeho řetězcová hodnota by byla hello svět.

Krok 6 – Escapování uvozovek a apostrofů

Jak jsme si ukázali, uvozovky a apostrofy se používají k označení řetězců ve zdrojovém kódu. To představuje problém: nemůžete je mít přímo v řetězci. V opačném případě to způsobí problémy. Následující kód to demonstruje:

Strings in Ruby 8

Existují různé způsoby, jak tento problém obejít.

  • Použití alternativní syntaxe řetězců

Jedná se o nejjednodušší způsob, jak tento problém obejít. Pokud váš řetězec vyžaduje jednoduché uvozovky, použijte v řetězcovém literálu dvojité uvozovky (a naopak).

Pojďme opravit předchozí příklad:

Dalším příkladem by mohlo být:

To však nebude fungovat v každé situaci. Například:

  • Použití escape znaků

Zpětné lomítko ( \) znak se často označuje jako escape znak. Zabraňuje Ruby interpretovat následující znak doslovně. Pojďme opravit předchozí příklad. Použijte zpětné lomítko, abyste zabránili Ruby interpretovat vnitřní dvojité uvozovky jako literály:

  • Použití alternativní syntaxe

Zatím jsme pracovali pouze s jednoduchými a dvojitými uvozovkami k označení řetězcového literálu. Předchozí příklady jsou však jednoduchou ukázkou toho, jak se to může velmi rychle vymknout kontrole. Chceme-li tento problém vyřešit, můžeme uvozovky úplně zahodit a k označení začátku a konce řetězce použít zcela jiný symbol.

Podívejte se na následující příklad:

Zde:

    • Symbol % definuje další znak ( $, v tomto případě) jako oddělovač řetězce.
    • Řetězcový literál je zde $ta rychlá hnědá liška řekla, "Skočil jsem přes líného psa"$.

Pojďme to uvést do praxe:

Zde se s řetězcem v podstatě zachází následovně:

To však znovu přináší problém s escapováním oddělovače, pokud je použit v řetězci. Jedním ze způsobů, jak se tomu vyhnout, je použití symbolů, které se v řetězcích obvykle nevyskytují. Mezi takové symboly mohou patřit složené závorky, hranaté závorky atd.:

Funguje to také skvěle s interpolací řetězců:

Je také běžné používat %Q{} a %q{} k definování řetězců v programech v Ruby. Zde %Q{} se chová jako dvojité uvozovky a %q{} se chová jako jednoduché uvozovky.

Krok 7 – Nové řádky a dlouhé řetězce

Při práci s řetězci nastanou situace, kdy budete chtít do řetězce vložit nový řádek nebo návrat vozíku (carriage return). Můžeme tak učinit vložením escape znaků \n (nový řádek) a \r (návrat vozíku).

Podívejte se na následující příklad:

Tento řetězcový literál vypadá nepřehledně, že? Pojďme ho přeuspořádat pro lepší čitelnost:

Místo ručního deklarování znaků nového řádku můžeme použít také následující strukturu:

Strings in Ruby 8

Strings in Ruby 9

V této metodě si řetězec zachovává všechny bílé znaky. To však kazí výstup. Chcete-li to opravit, odstraňte přebytečné bílé znaky:

Strings in Ruby 10

I když byl problém s bílými znaky vyřešen, snižuje to čitelnost kódu. Tento problém můžeme vyřešit implementací heredoc, což je označení pro víceřádkové řetězcové literály. Aktualizovaný kód by vypadal takto:

Strings in Ruby 11

Strings in Ruby 12

Počínaje verzí Ruby v2.3 a novější je k dispozici další funkce nazvaná vlnitá heredoc syntaxe. Odstraňuje úvodní prázdné znaky v řetězcích. Chcete-li vyjádřit vlnitý heredoc, nahraďte spojovník ( -) s vlnovkou ( ~):

Strings in Ruby 13

Krok 8 – Replikování řetězců

V některých situacích může být nutné opakovat řetězec několikrát. Ruby umožňuje replikovat řetězce různými způsoby.

Jednou z takových technik je použití * operátor. Obecně se používá jako operátor násobení při práci s čísly. Při práci s řetězci se však stává operátorem replikace řetězců, který opakuje jeden řetězec tolikrát, kolikrát je potřeba. Počet opakování musí být celé číslo.

V následujícím příkladu bude text Boris opakován 5krát:

Strings in Ruby 14

Pomocí této funkce můžeme vytvořit skvělé ASCII umění. Podívejte se na následující příklad:

Závěrečné myšlenky

Řetězce jsou v programování naprosto zásadní. Tento průvodce ukazuje práci s řetězci v jazyce Ruby. Naučili jsme se, jak řetězce vytvářet a provádět různé operace, jako je spojování, práce s novými řádky, uvozovkami atd. Pomocí interpolace řetězců jsme se také naučili, jak lépe začlenit hodnoty proměnných do řetězců. Pomocí operátoru replikace řetězců můžeme také jeden řetězec opakovat vícekrát.

Ačkoli je Ruby sám o sobě vynikající programovací jazyk, často se kombinuje s frameworkem Rails. Ruby on Rails je open-source framework pro webové aplikace. Zjistěte více o instalaci Ruby on Rails na Ubuntu. Ruby však může fungovat i s jinými aplikacemi, jako jsou MySQL a PostgreSQL.

Příjemnou práci!

author

Preslav Dobrev

Autor · CloudSigma

Preslav Dobrev je kreativní designér ve společnosti CloudSigma, který se zaměřuje na konzistentní firemní identitu prostřednictvím tradičních i inovativních marketingových kanálů. Je zdatný v propojování umělecké vize se strategickým marketingem za účelem vytváření působivých příběhů značky.

Komentáře

Zatím žádné komentáře. Buďte první.