13. března 2004
.:Přidat k oblíbeným
.:Napsat e-mail





Lekce
:01: základy :02: řetězce

Co tu máme v druhé lekci?

Tak tu konečně máme další aktualizaci a s ní i další lekci VBScriptu. Zatímco první lekce měla seznámit se základními prvky každého programovacího jazyka, tato vám snad přiblíží různé (a taky různě užitečné) vestavěné funkce tohoto jazyka. Některé fce jdou sice nahradit jiným zdrojovým kódem, ale pokud budete znát syntaxi, nevidím důvod, proč si neusnadnit život. Samozřejmě tyto funkce zde neuvedu všechny, vždyť je jich mnohem více než 70 a mnoho z nich je pro průměrného člověka prakticky nepoužitelných, a proto zde uvádím jen ty "šikovné." Možná taky budete nadávat, že tu není ani jeden fungující příklad. Není to tím, že by mé skripty nefungovaly, nebo že sem tak línej sem něco udělat. Je to tím, že syntaxe a použití je opravdu jednoduché a vymyslet nějakej aspoň trochu inteligentní příklad na tyto hovadinky je téměř nemožné. Pokud byste to někdo bez toho příkladu fakt nevydržel, tak tu zanechte vzkaz, a já vám dříve nebo později (no spíš později :-)) něco zašlu. Tak vzhůru do toho, ale nechte si taky něco na zítřek, kdo ví, kdy najdu čas udělat další lekci ;-)

Řetězcové funkce

Řetězcové funkce slouží k analýze řetězců a k dalším možnostem práce se řetězci. Nejvíce je asi využijete, pokud budete nějakým způsobem chtít zkontrolovat, nebo nějakým způsobem upravit, údaje zadané uživatelem do formuláře nebo vstupního okna.

Pravděpodobně někdy budete chtít zjistit délku nějakého řetězce. K tomu nám slouží funkce Len s jednoduchou syntaxí:

Len(proměnná)

Místo proměnné obsahující řetězec tu samozřejmě může být jakýkoli řetězec, jen ho nezapomeňte oddělit uvozovkami!

Pokud chceme z řetězce vyseknout jen jeho část, a s tou pak dále pracovat, použijeme funkci Mid.

Mid(proměnná, začátek, početznaků)

Jmeno = "Josef Prorok"
primeni = Mid(Jmeno, 7, 6)

U tohoto příkladu bude proměnná primeni obsahovat řetězec "Prorok". Parametr početznaků je nepovinný, pokud jej nezadáme vrátí nám funkce všechny znaky od zadaného začátku až do konce.

Čas od času se dají ještě použít fce Left či Right, která vrátí udaný počet znaků ze zadaného řetězce a to buď zprava nebo zleva. Určitě vám nemusím říkat, jak se pozná která je která (-:

left(proměnná, početznaků)
right(proměnná, početznaků)

x = right("bomba.jpg", 3) 'x = "jpg"

Analýza a zkoumání řetězců

Někdy je potřeba zjistit, zda nějaký řetězec něco konkrétního obsahuje, případně toto něčím nahradit. Pro tyto případy lze se stejným úspěchem použít cyklus, ale proč nevyužít následující vestavěné funkce.

Pro detekci prezence, či absence určitého podřetězce v řetězci (čili abychom zjistili třeba že v řetězci je písmeno A - a nebo ne) je vhodné použít fci Instr. Tato funkce vrací hodnotu 0, pokud hledaný podřetězec nenalezne, nebo číselnou hodnotu různou od nuly, pokud podřetězec nalezne.

Instr([zacatek, ] prohledavanyretezec, podretezec[, porovnani])

Vidíme, že tato funkce má, kromě již zmíněných, také dva nepovinné parametry, a to sice zacatek a porovnani. Zacatek udává pozici v řetězci, od které se má prohledávaní zahájit, pokud není uveden, prohledává se automaticky od začátku. Porovnání obsahuje hodnotu jedné ze dvou konstant VBScriptu, která určuje, zda se bere ohled na velikost písmen v řetězci a podřetězci. Toto jsou ony:

vbBinaryCompare ==> její hodnota je 0, řetězce si musí odpovídat naprosto přesně, včetně velikosti písmen, tato hodnota je implicitní!

vbTextCompare ==> její hodnota je 1, na velikost písmen se nebere ohled.

Podobnou funkcí je funkce InStrRev, která vrací pozici jednoho řetězce uprostřed druhého, tedy pokud jej najde.

InStrRev(prohledavanyretezec, podretezec[, zacatek[, potovnani]])

Nepovinné parametry zacatek a porovnani fungují stejně, jako u funkce předchozí.

No a ještě tu máme někdy užitečnou funkci Replace, která nám umožňuje nahradit v řetězci všechny podřetězce stejné hodnoty jinými podřetězci (pravděpodobně jiné hodnoty).

Replace(prohledavanyretezec, conahradit, cimnahradit[, zacatek[, pocet[, porovnani]]])

x = Replace("Strč prst zkrz krk.", "r", "l") 'x = "Stlč plst zklz klk"

No aspoň vidíte, jak mluví ukázkový případ pro logopeda. Nepovinný parametr pocet určuje, kolikrát má k nahrazení dojít, pokud bychom v našem příkladě namísto tohoto parametru napsali 1, dojde k nahrazeni pouze prvního r. Zacatek a porovnani opět fungují tak, jak jsme zvyklí.

Další funkce

A na závěr tu máme ještě pár funkcí pro práci se řetězci, které už mi připadají trochu jako zbytečný luxus, neboť mohou být stejně dobře nahrazeny jiným příkazem a většinou ani ne o moc delším. Ale co, tady jsou:

Funkce LCase a UCase slouží k převodu všech písmen v řetězci na malá (LCase) nebo na velká písmena (UCase). Pokud se nechcete patlat s parametry na porovnávání řetězců, ale chcete, aby velikost písmen nehrála žádnou roli, použijte jednu z těchto funkcí. Použití je fakt jednoduché:

LCase(retezec)
UCase(retezec)

Až vás někdo příště pořádně / promiňte, ale tohle slovo bylo zcenzurováno / a budete mu chtít poslat mail se třemi sty (a třeba i více) vykřičníky, napište si jednoduchý skript s funkcí String. Tato funkce totiž velmi obratně stvoří řetězec z opakovaných výskytů téhož znaku, kolik těchto výskytů bude záleží jen na vás - jen to nepřežeňte :-)

String(pocet, znaky)

x = String(300, "!")

No a to je z této lekce všechno. Tak nás trpělivě navštěvujte, tentokrát ta aktualizace přijde fakt o hodně dřív:-))

Azrael


<< Předchozí lekce
_
^
Back to top
Valid XHTML 1.0!   Valid CSS!
Poker beginneling? Voor duidelijke speluitleg surft u naar ons casino online. Oefen met gratis poker spellen! Ook voor andere casino spelletjes bent u bij ons aan het juiste adres!
TOPlist