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
-
inPage AI: Jak na generování obsahu
18. července 2024 -
OpenAI představilo novou funkci ChatGPT Search
6. listopadu 2024 -
Vlastní web pomocí AI už může vytvořit opravdu každý
8. srpna 2024 -
Proč investovat do nejvýkonnějších VPS s AMD EPYC procesory
14. června 2024
Nejnovější
-
Jak rozšířit úložiště Macu za pětinovou cenu?
16. prosince 2024 -
Nové trendy v doménách pro osobní projekty – DIY, LIVING a LIFESTYLE
9. prosince 2024 -
Jak chránit webové stránky před Web/AI Scrapingem
27. listopadu 2024 -
Jaký monitor je nejlepší k novému Macu Mini?
25. listopadu 2024