Vyzrajte nad řetězcovými proměnnými v ASP – zvýrazňování
V minulých dvou částech seriálu článků o řetězcových funkcích v ASP jste se seznámili s vestavěnými funkcemi Visual Basic Scriptu pro zpracování řetězců. Dnes vám přinášíme několik funkcí, které mohou ulehčit vaše trápení s vytvářením stránek v ASP.
Zvýraznění vybraného slova
Mnohdy se vám stane, že potřebujete v textu zvýraznit nějaké slovo. Pomocí funkce, kterou vám dnes představím, to nebude žádný problém. <% 'function zvyrazni(text,slovo,barva) 'if len(text)<>0 then ‚pozice=instr(lcase(text),lcase(slovo)) ‚ if pozice<>0 then ‚ zacatek=left(text,pozice-1) ‚ konec=right(text,len(text)-pozice-len(slovo)+1) ‚ stred=mid(text,pozice,len(slovo)) ‚ zvyrazni=zvyrazni & zacatek &“„&stred&“„&konec ‚ else ‚ zvyrazni=text ‚ end if ‚else ‚ zvyrazni=text ‚end if ‚end function ‚response.write(zvyrazni(„Visual Basic Scripting – Jak snadné je používat Visual Basic Scripting“,“basic“,“red“)) ‚function zvyrazni1(text,slovo,barva) ‚if len(text)<>0 then ‚ pozice=instr(lcase(text),lcase(slovo)) ‚ if pozice<>0 then ‚ zacatek=left(text,pozice-1) ‚ stred=mid(text,pozice,len(slovo)) ‚ konec=zvyrazni1(right(text,len(text)-pozice-len(slovo)+1),slovo,barva) ‚ zvyrazni1=zvyrazni1 & zacatek &“„&stred&“„&konec ‚ else ‚ zvyrazni1=text ‚ end if ‚else ‚ zvyrazni1=text ‚end if ‚end function ‚response.write(zvyrazni1(„Visual Basic Scripting – Jak snadné je používat Visual Basic Scripting“,“basic“,“red“)) ‚function zvyraznic(text,slovo,barva) ‚ if len(text)<>0 then ‚ index=1 ‚ delka=len(text) ‚ delkaslova=len(slovo) ‚ do while index
|
Použití konstrukce pozice=instr(lcase(text),lcase(slovo)) způsobí, že jsou nalezeny všechny slova bez ohledu na velikost písmen. Pokud chcete mít funkci takovou, že bude rozlišovat mezi velkými a malými písmeny, použijte konstrukci pozice=instr(text,(slovo).
Výsledek funkce:
Visual Basic Scripting
Zdánlivě vše vypadá, že v pořádku, ale pouze do okamžiku, než funkci předhodíte text, ve kterém je několik slov, které chcete zvýraznit. Funkce pak zvýrazní pouze první nalezené slovo.
Pokud chcete, aby funkce uměla označit třeba dvě slova, máte dvě možnosti, jak to udělat. Jako první možnost asi většinu z vás napadne to, že bude v cyklu procházet celý řetězec.
|
Jak vidíte, funkce se nám poněkud prodloužila díky kontrolám pozice v řetězci a posunům ukazatele v řetězci.
Jak jsem již předeslal, existuje ještě druhé řešení. Dovolím si tvrdit, že toto řešení je jednodušší a přehlednější – jedná se o Rekurzi. Dříve než vám předvedu, jak jednoduše lze upravit funkci tak, aby vyhledala a označila slova v celém řetězci, je třeba se zmínit, co to vlastně ta rekurze je.
Při použití rekurzívních algoritmů je funkce postavena tak, že během své činnosti volá sama sebe. V našem případě to znamená, že řetězec od nalezeného slova do konce řetězce zpracujeme opětovně stejnou funkcí. Jak sami vidíte, použití rekurze si vyžádalo úpravu jediného řádku funkce:
|
Pro úplnost uvedu ještě jednu verzi této funkce, tentokráte s použitím funkce replace. Nevýhodou tohoto řešení je fakt, že ho nelze použít v případě, pokud chceme označovat slova bez ohledu na velikost písmen.
|
To je pro dnešek vše. Pokud máte tip, jaké funkce byste na Intervalu rádi viděli, pošlete mi e-mail nebo je uveďte do diskuse ke článku.
Starší komentáře ke článku
Pokud máte zájem o starší komentáře k tomuto článku, naleznete je zde.
Mohlo by vás také zajímat
-
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Landing page: Jak vytvořit landing page s vysokým CTR
7. května 2024 -
Fandíme českým sportovcům a rozdáváme hosting ZDARMA!
26. července 2024
Nejnovější
-
Výkonný a kompaktní: ASOME Max Studio s výjimečným poměrem cena/výkon
11. listopadu 2024 -
Šokující data od Microsoftu: Kyberútoky rostou o stovky procent!
8. listopadu 2024 -
Chcete jedinečnou doménu? Objevte koncovky FOOD, MEME a MUSIC!
7. listopadu 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024