předchozí lekce (1.19) | obsah kurzu | následující lekce (1.21) |
S řetězci je možné provádět spoustu operací. Je možné je slučovat, kopírovat část podřetězce, doplňovat znaky na libovolné místo, převádět na číslo, zjišťovat délku řetězce a podobně. Veškeré uvedené funkce obsahuje knihovna pro zpracování řetězců, se kterou se nyní seznámíme.
Jestliže potřebujete zjistit délku řetězce, použijte funkci Len:
Writeln(Len(S))
Pokud potřebujete z řetězce vybrat pro další zpracování pouze jeho část, můžete
použít funkci Mid, kde zadáte mimo řetězce i počáteční pozici a délku podřetězce:
Writeln(Mid("BONANZA",3,4)) 'vypíše 'NANZ'
Velmi častým požadavkem je možnost vyjmout z řetězce určitou část, případně do
řetězce vložit jiný řetězec. K vyjmutí podřetězce je možné použít přístupnou funkci
jazyka KLONDAIK Delete, která ze zadaného řetězce zruší od zadané pozice zadaný
počet znaků. Naopak, procedura Insert z jazyka KLONDAIK vloží na zadanou pozici do
řetězce požadovaný podřetězec. Obě funkce mění současně délku řetězce.
'program ZNAKY1.BON
Sub Main()
S = "Program OZOGAN BONANZA"
Write ("Délka řetězce: ")
Writeln(Len(S))
S = Insert("*", s, 15) 'vloží znak '*' do řetězce
Writeln(S)
S = Delete(S, 1, 8) 'vyjme znaky z řetězce
Writeln(S) 'vypíše: 'OZOGAN*BONANZA'
Write ("Délka řetězce: ")
Writeln(Len(S)) 'vypíše: 15
Write ("Pozice 'KLON': ")
Writeln(Pos("KLON", S)) 'vypíše: 8
End Sub
Pokud potřebujete zjistit, zda se v řetězci nalézá hledaný podřetězec, lze použít
funkci Pos. Funkce vrací pozici prvního znaku hledaného podřetězce.
S = "OZOGAN BONANZA"
Writeln(Pos("KLON",S)) 'vrací číslo 8
Každý znak v řetězci má svou číselnou hodnotu, udávající pozici znaku v ASCII
tabulce, ve které je umístěno všech 256 možných znaků. ASCII tabulka je pevně
definována a platí i mimo systém KLONDAIK. Spodní část tabulky do pozice 125 je vždy
pevně dána. Horní část tabulky již záleží na definici národního prostředí počítače (např.
písmena s diakritikou). Na začátku tabulky jsou umístěny tzv. netisknutelné znaky, které
se používají pro obsluhu tiskárny. Dále jsou již definovány jednotlivé znaky. Každý znak
řetězce můžete proto rozložit na jednotlivé znaky a jejich hodnoty. V programu je
definována funkce Asc která provádí převod hodnoty znaky na číselnou pozici v tabulce.
Opačná funkce je Chr, která vrací dle zadaného čísla odpovídající znak z ASCII tabulky:
'program ZNAKY2.BON
Sub Main()
Writeln(Asc("A")) 'vypíše ASCII hodnotu znak znaku 'a'
Writeln(Asc("a")) 'vypíše ASCII hodnotu znak znaku 'A'
Writeln(Chr(65)) 'vypíše znak tabulky zadané hodnoty
For x = 65 to 90
Write(Chr(x)) 'vypíše abecedu - velká písmena
Next
Writeln("")
For x = 97 to 122
Write(Chr(x)) 'vypíše abecedu - malá písmena
Next
Writeln("")
End Sub
Všimněte si, že velká písmena v tabulce začínají na pozici 65 a malá písmena na
pozici 97, jejich rozdíl je proto 32. To by bylo možné využít například pro převod řetězce
na malá písmena, jak ukazuje následující příklad.
'program ZNAKY3.BON
Sub Main()
S = "ozOgaN bOnAnZa"
For X = 1 to Len(S)
If (Asc(Mid(S,X,1))>=65) and (Asc(Mid(s,x,1))<=90) then
S = Mid(S, 1, X-1)_
+ Chr(Asc(Mid(S, X, 1))+32)_
+ Mid(S, X+1, Len(S)-X)
End If
Next
Writeln(S) 'vypíše "ozogan bonanza"
End Sub
Pro převod řetězce na velká písmena se používá funkce UCase, na malá písmena
potom funkce LCase. Převádí se znaky včetně diakritických znamének:
s := 'ozOgaN kLonDaiK';
Writeln(LowerCase(s)); {převede na malá písmena}
Writeln(UpperCase(s)); {převede na velká písmena}
Pravděpodobně velmi často budete potřebovat převádět čísla na řetězce a obráceně.
Jednodušší je přitom převod čísel na řetězec. Pro převod čísla typy Integer se používá
funkce CStr. Pokud potřebujete převést číslo na řetězec se zadáním počtu desetinných
míst, můžete použít dostupnou funkci z jazyka KLONDAIK RealToStr. Ta vám umožní
zadat nejen délku čísla, ale i počet desetinných míst. Řetězec na celé číslo se převádí
funkcí CInt. Na číslo včetně její desetinné části můžete převést řetězec funkcemi CDbl,
nebo funkcí CLng. K převodu je možné použít také dostupné funkce jazyka KLONDAIK
StrToReal, kdy budou nenumerické znaky ignorovány.
'program ZNAKY4.BON
Sub Main()
I = 123
R = 123.45
Writeln("číslo: "+CStr(I))
Writeln("číslo: "+RealToStr(I,6,2))
Writeln("číslo: "+RealToStr(R,6,2))
R = StrToReal("123.45")/3
End Sub
Knihovna pro práci s řetězci obsahuje i další zajímavé použitelné funkce.
předchozí lekce (1.19) | obsah kurzu | následující lekce (1.21) |