Blog

Kotlin Raw String

Learn2Code tím - 19.02.2021 - Vzdělávání

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

Použitie v reálnej aplikácii

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.



Logo facebook

Learn2Code tím

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.


Ako na vlastný Virtuálny privátny server - časť 1.

Vzdělávání

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...

Abstrakcia a zoraďovanie v kolekciách v Jave

Vzdělávání

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...

Funkcie VLOOKUP

Vzdělávání

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...