Části textu

Často potřebujete jen část textu: první písmeno jména nebo rok z data. Metoda sub (z anglického substring, podřetězec) vrátí část mezi dvěma pozicemi. Znaky textu se číslují od 1, stejně jako prvky seznamu, a obě pozice do výsledku patří:

local slovo = "stodola"
print(slovo:sub(1, 3))
print(slovo:sub(4, 7))
print(slovo:sub(4))

Vypíše:

sto
dola
dola

Bez druhé pozice jde sub až do konce textu. Jeden znak dostanete tak, že zadáte dvakrát stejnou pozici: slovo:sub(1, 1) je "s". Zvláštní typ pro jeden znak Lua nemá, je to prostě text o délce 1.

Pozice mohou být i záporné. Pak se počítají od konce: -1 je poslední znak, -2 předposlední a tak dále. To se hodí, když víte, jak dlouhý je konec textu, ale ne, jak dlouhý je celý text:

local slovo = "stodola"
print(slovo:sub(-1))
print(slovo:sub(-4))
print(slovo:sub(1, -5))

Vypíše:

a
dola
sto

Poslední řádek vezme všechno od prvního znaku po pátý od konce, tedy slovo bez posledních čtyř znaků.

sub nikdy neskončí chybou. Pozice za koncem textu dají tolik, kolik tam je, a když mezi pozicemi nic není, dostanete prázdný text:

local slovo = "stodola"
print(slovo:sub(5, 100))
print(slovo:sub(20) .. "|")

Vypíše:

ola
|

Metody vracejí nové texty, a tak můžete na výsledku rovnou zavolat další metodu. Takhle napíšete slovo s velkým počátečním písmenem: vezmete první znak velkým písmenem a připojíte k němu zbytek:

local jmeno = "bella"
local hezky = jmeno:sub(1, 1):upper() .. jmeno:sub(2)
print(hezky)

Vypíše:

Bella

jmeno:sub(1, 1):upper() se provádí zleva doprava: nejdřív sub vrátí "b", potom z něj upper udělá "B". A tento cyklus projde všechny znaky, jeden po druhém:

local slovo = "pes"
for i = 1, #slovo do
    print(i, slovo:sub(i, i))
end

Vypíše:

1	p
2	e
3	s

Častá chyba: zapomenout, že i druhá pozice do výsledku patří. slovo:sub(1, 4) vrátí čtyři znaky, "stod", ne tři. A stejně jako # počítají pozice bajty, takže písmeno s diakritikou zabírá dvě z nich. Víc o tom později v této lekci.

Pokyny

Každý štítek končí datem sklizně a datum má vždy 10 znaků. Vezměte ho pomocí sub a záporné pozice, uložte do proměnné datum a vypište Datum: 2026-06-14.

Název plodiny je všechno před mezerou: štítek bez posledních 11 znaků (mezery a data). Uložte ho do proměnné plodina a vypište ho s velkým počátečním písmenem: Plodina: Jahody.

Emini zákazníci jsou zvyklí na datum v českém pořadí: den, měsíc, rok. Vezměte z proměnné datum pomocí sub rok, měsíc a den a vypište Sklizeno: 14.06.2026.

Začněte programovat zdarma

Registrací souhlasíte s provozními podmínkami a zásadami ochrany osobních údajů.

Nebo se registrujte pomocí:

2/9