přejít na obsah přejít na navigaci

Linux E X P R E S, Naučte se Ruby 2 - práce s textem

Naučte se Ruby 2 - práce s textem

ruby.jpg

V dnešním díle se podíváme na to, co je a není text a především jak se s ním v Ruby pracuje. Lépe než o textu bychom měli hovořit o textovém řetězci, protože text je vlastně řetězec po sobě následujících písmen. Pro jednoduchost budeme používat označení text, ale pamatujte i na tuto jeho vlastnost a označení.


Text

V následujícím výpisu se nachází příklady textu tak, jak ho zapisujeme v programovacím jazyce Ruby.

'Ahoj.'
'5 je moje oblíbené číslo... jaké je vaše?'
'Snoopy řekl #%^?&*@! a pak sletěl ze stolu.'
'     '
''

Je vidět, že se text uvozuje pomocí jednoduchých uvozovek a přitom je prakticky jedno, co je jimi ohraničeno. Text může obsahovat jedno slovo, celou větu, čísla, mezery i speciální symboly. Poslední text bychom mohli označit pojmem prázdný text nebo lépe prázdný textový řetězec.

Symbol jednoduché uvozovky najdete na klávesnici vlevo vedle klávesy [Enter]. Na její napsání je třeba přepnout klávesnici na angličtinu, nebo použít pravou klávesu Alt někdy označovanou též symbolem Alt Gr.

Nyní se dostáváme k programu typu "Hello world!" ("Ahoj světě!"), kterým začíná většina odborných knih uvádějících člověka do světa programování. No a protože jsme už patříme mezi ty zkušenější programátory, tak si ho rovnou trochu vylepšíme:

puts 'Ahoj světě!'
puts ''
puts 'Měj se.'

zobrazí očekávané:

Ahoj světě!

Měj se.

Pro výpis textu se tedy používá známý příkaz puts, za kterým následuje vlastní text.

Pro výpis prázdného řádku můžete použít nejen výše zmiňovaný příkaz puts '', ale i příkaz puts samotný. Je tedy jedno zda za puts následuje prázdný řetězec nebo "nic", v obou případech se na výstup vypíše prázdný řádek.

Aritmetika s řetězci

I když to může působit poněkud záhadným dojmem a možná si teď někdo ťuká i na čelo, v této části budeme text sčítat a násobit. Podívejme se na další příklad:

text2.rb

puts 'Sklenku vína' + 'si dám moc rád.'

vypíše

Sklenku vínasi dám moc rád.

V programu text2.rb jsme spojili dva texty dohromady. Aby byla věta správně, je potřeba přidat mezeru. To provedete jedním z následujících způsobů:

puts 'Sklenku vína ' + 'si dám moc rád.'
puts 'Sklenku vína' + ' si dám moc rád.'
Sklenku vína si dám moc rád.
Sklenku vína si dám moc rád.

Je vidět, že je jedno zda mezeru přidáte na konec prvního řetězce, nebo na začátek druhého řetězce. Rozhodnutí závisí na vás a vašich zvyklostech.

Aby toho nebylo málo, text je možné také násobit.

text4.rb

puts 'Popis cesty je následující:'
puts 'doleva ' * 5 + 'doprava ' * 2

vypíše

Popis cesty je následující:
doleva doleva doleva doleva doleva doprava doprava

Vynásobením textového řetězce se provede jeho zopakování.

Text vs. číslo

Jaké jsou tedy odlišnosti mezi textem a číslem? Pro vysvětlení se podívejme na tento příklad:

text5.rb

puts  12  +  12
puts '12' + '12'
puts '12  +  12'
puts
puts  2  *  5
puts '2' *  5
puts '2  *  5'
24
1212
12  +  12

10
22222
2  *  5

Pozor, text a číslo nelze libovolně kombinovat. Alespoň ne v tom smyslu, že s textem nelze počítat a naopak číslo se nechová jako text.

V rozporu s předchozí poznámkou zkusme přesto číslo a text zkombinovat.

text6.rb

puts '12' + 12

Po spuštění programu se vám zobrazí následující chybové hlášení jazyka Ruby:

text6.rb:1:in `+': can't convert Fixnum into String (TypeError)
        from text6.rb:1

Česky řečeno, nemohu převést číslo na text a program skončí chybou …

Konečně, ne všechny znaky je možno napsat tak jednoduše, jak se může zdát. Pokud bychom např. chtěli zdůraznit veledůležitou informaci o tom, že je nutno zadat uživatelské 'jméno' a 'heslo', musíme to zapsat takto:

text7.rb

puts 'Zadejte prosím své uživatelské \'jméno\' a \'heslo\':'
Zadejte prosím své uživatelské 'jméno' a 'heslo':

Symbol jedné uvozovky (') hraje v jazyku Ruby speciální význam a tak je k nim potřeba také přistupovat. Před tyto speciální symboly se umísťuje symbol lomítka (\) a tím se jejich význam potlačí.

Příklady 2

  • Napište text: Jmenuji se 'Igor Hnízdo'.
  • Napište s využitím opakování části textu binární číslo: 1 1111 1111 1111 0000 0001. Nejprve to zkuste s naznačenými mezerami a pak i bez mezer.
  • Napište následující výstup programu:
 -------------------------
| Robot 'Karel' říká |
 -------------------------

A co dál? V příštím díle si povíme něco o proměnných a přiřazení.

Nahoru

Příspěvky

Naučte se Ruby 2 - práce s textem
Pátek 30. 10. 2008, 14:42:26
Odpovědět  Odkaz 
Proč tady nemáte řetězce ohraničené uvozovkami? Ty se používají častěji a o hodně víc toho umí...
Martin Šín Re:Naučte se Ruby 2 - práce s textem
Martin Šín 30. 10. 2008, 18:12:26
Odpovědět  Odkaz 
Dobrá připomínka, díky za ní. Proč to tu není? ;-) Články jsou z velké části volným přepisem anglického tutoriálu zmiňovaného v prvním díle nahoře. Tzn. nejsem programátor, který by ruby aktivně používal a mou motivací je pouze touha se ruby řádně naučit (dovolí-li mi to čas). Dvojité uvozovky pak nejsou ve výše uvedených příkladech třeba, i když bychom je mohli bez problémů zaměnit.
Re:Re:Naučte se Ruby 2 - práce s textem
Pátek 3. 11. 2008, 17:08:20
Odpovědět  Odkaz 
No, to sice ano, ale řetězce s uvozovkami toho umí poněkud více - např. znak \n (nový řádek), a vůbec hromadu podobných escape sekvencí, (\t - tabulátor, \e - escape apod.)
A taky takovou fintu, která se celkem dost používá - "Kolik je 15 - 4? #{12 - 4}"
je řetězec "Kolik je 15 - 4? 8", protože v řetězci s uvozovkami se cokoli mezi #{ a } vyhodnotí jako výraz (a zdaleka nemusí jít jen o odčítání ;-) )
Martin Šín Re:Re:Re:Naučte se Ruby 2 - práce s textem
Martin Šín 3. 11. 2008, 19:28:32
Odpovědět  Odkaz 
Ok, ok, já vám i dokumentaci věřím. ;-) Jak říká má oblíbená knížka - vždy existuje ještě alespoň jeden další způsob jak to udělat (jinak a lépe). Váš způsob zápisu je elegantnější a čtivější, "můj" bych zas přirovnal k tvrdohlavému zápisu v Pascalu a tak se ho budu dál zarytě držet. ;-) :-)

Odpovědět

Nejsou podporovány žádné značky, komentáře jsou jen čistě textové. Více o diskuzích a pravidlech najdete v nápovědě.
Diskuzi můžete sledovat pomocí RSS kanálu rss



 
 

Top články z OpenOffice.cz