String je základný dátový typ v programovacích jazykoch. Slúži na uchovanie textu. Ak chceme napísať String tak text vložíme medzi dvojité úvodzovky.
val cesta = "cesta";
Vo väčšine prípadov je to dostačujúce. Čo ak do textu chceme nastaviť cestu na súbor ako text.
C:\work\tools\__test
Musíme ho vložiť do premennej typu String a všetky lomítka zdvojiť - escapnúť.
val cesta = "C:\\work\\tools\\__test";
Kotlin má aj pomôcku a tou je Raw String. Na napísanie textu použijem trikrát dvojité úvodzovky na začiatku aj na konci.
val cestaRaw = """C:\work\tools\__test"""
Raw String nám umožňuje zapísať String na viac riadkov bez nutnosti spájania pomocou +.
Mám text, ktorý chcem napísať na viac riadkov. Čo musím spraviť ak to chcem v jednom Stringu? Všetky časti spojím pomocou + a pridám špeciálnu značku pre nový riadok \n.
val text = "1 639,33\n" + "6 540,03\n" + "8179,36\n" + "+2500,04"
Pri Raw Stringu len stlačím enter pre nový riadok a pokračujem v písaní.
val textRaw = """1 639,33 6 540,03 8179,36 +2500,04"""
Tento spôsob ale nie je pekne čitateľný – všetok text mám zasadený na ľavú stranu, lebo nechceme aby sme tam dali napr. taublátor – v pôvodnom textne nebol.
Čo môžeme spraviť je pridať nejaké špeciálnu značku na začiatok riadku, ktorý chcem odsadiť a potom poviem, že všetko na ľavo od značky spolu so značkou považujem len za odsadenie textu.
Pridajme značku (hocijakú):
val textRaw = """1 639,33 #6 540,03 #8179,36 #+2500,04"""
Teraz povieme, že # je špeciálna značka pre odsadenie.
val textRaw = """1 639,33 #6 540,03 #8179,36 #+2500,04""".trimMargin("#")
A môžeme odsadiť pre lepšiu čitateľnosť:
val textRaw = """1 639,33 #6 540,03 #8179,36 #+2500,04""".trimMargin("#")
Alebo použijeme default znak oddeľovača, čo je pipe |.
val textRaw = """1 639,33 |6 540,03 |8179,36 |+2500,04""".trimMargin()
Teraz sa tieto dva Stringy budú rovnať.
println("${text == textRaw}") //true
Určite by si rád videl príklad z reálnej aplikácie. Jedným z takýchto príkladov by bolo použitie pri písaní Android aplikácie. Presnejšie napríklad pri písaní príkazov pre dopyt na databázu v Room frameworku, ktorý sa používa na zjednodušený prístup k databázam.
V Room píšeme takzvané Dao triedy na prístup k databáze. Vezmime si jeden príklad kde chcem napsíať SQL príkaz na vybratie filmov z databázy.
@Query("SELECT id, movie_name, genres, directors year FROM MOVIES") suspend fun getAllMovies(): List<MovieShort>
Príkaz by si rád napísal na viacero riadkov aby bol lepšie čitateľný.
@Query("SELECT id, movie_name, genres, directors year " + "FROM MOVIES") suspend fun getAllMoviesInShortForm(): List<MovieShort>
Alebo použiješ Raw String.
@Query(""" SELECT id, movie_name, genres, directors year FROM MOVIES """)
Určite si vieš predstaviť ako sa ti zlepší čitateľnosť, ak budeš mať zložitejšie select príkazy v kombinácii napríklad s join.
Učíme ľudí dizajnovať, robiť webstránky a programovať. Naše prezenčné kurzy nájdeš vo viacerých mestách na Slovensku a pomocou online kurzov sa môžeš vzdelávať z pohodlia domova.
Vzdelávanie
21.01.2021 - Lubomir Herko
Každý týždeň jeden blog. Také som si dal predsavzatie do nového roka. Hneď prvý týždeň sa to nepodarilo, ale čo už 🤦🏻♂️ . V tomto texte (alebo...
Vzdelávanie
08.12.2020 - Learn2Code tím
Poďme sa porozprávať o abstraktných triedach v jave (abstract class in java). Abstrakcia slúži na schovanie zložitosti od používateľa a zobrazuje len...
Vzdelávanie
16.11.2020 - Learn2Code tím
Funkcia VLOOKUP sa používa vtedy, keď potrebujete nájsť údaje v tabuľke alebo rozsahu podľa riadka. Vyhľadajte napríklad cenu automobilovej časti podľa...