Äntligen måndag!
Förra gången gick vi igenom Luas historia och grundläggande uppbyggnad.
I detta inlägg ska vi gå igenom något på vilket Lua är väldigt smidigt: strängar och stränghantering!
Att skapa strängar
Här hittar du online-interpretatorn, så du kan testa koden. Eftersom språket är dynamiskt typat är det bara att sätta en variabel till en sträng på ett av följande två sätt:
a = "'hej'" print (a) a = '"hej"' print (a)
Testa gärna koden och se vad som händer! Man kan använda både ” och ‘ till strängar, med den skillnad att det andra tecknet går att skriva i strängen innanför. Vill du alltså kunna skriva ut citationstecken i ditt skript måste du använda ‘-tecknet runt strängen, och vice versa (såvida du inte använder “escape”, \ före tecknet).
Strängar är egentligen en följd tecken, characters. Det innebär att strängen är en form av array, och man kan ta reda på dess längd genom att skriva:
a = "hej" print(#a)
Provkör gärna, koden kommer att skriva ut “3”. Notera att det är #a som returnerar längden på a, print() gör bara så att resultatet skrivs ut.
string-biblioteket har flera smidiga funktioner, som t.ex. “find” som hittar en delsträng i en sträng och returnerar start- och slutposition:
a, b = string.find("hejsan", "ejs") print(a) print(b)
Eftersom find returnerar två värden kan man, ungefär som i Python, skriva två variabler före tilldelningstecknet för att lagra båda värdena i. Det går också att använda regex-liknande kommandon, se mer här.
Notera också att första positionen i en Lua-sträng är 1, medan den i många andra språk är 0!
Ett annat sätt att skriva på, som är lite smidigare, är:
a = "hejsan" print(a:find("ejs"))
Det fungerar inte med en “ren sträng”, utan man måste använda en variabel som är satt till en sträng före kolonet.
Följande funktioner går också att använda:
-- Ersätta en delsträng med en annan, returnerar ny sträng och hur många byten som skett a = "hejsan" b, c = a:gsub("hej", "nej") print (b) print (c) -- Spegla en sträng print(a:reverse()) -- Hämta en delsträng ur en sträng print(a:sub(1, 3)) print(a:sub(4)) -- Omvandla sträng till gemener respektive versaler print(a:lower()) print(a:upper())
Och avslutningsvis, när man vill kombinera utskriften för flera strängar och/eller andra värden, använder man “..” :
a = "Här är " b = "ett nummer: " c = 12 print (a .. b .. c)
Så vad har vi lärt oss idag?
- Hur man skapar strängar och vad skillnaden är om man använder ” respektive ‘.
- Hur man smidigt kan få ut längden på en sträng.
- Vilka olika funktioner man kan använda för att söka fram, plocka ut eller ersätta delsträngar.
- Hur man smidigt skriver ut flera strängar och andra värden tillsammans i samma anrop
För mer information kring sträng-biblioteket och fördjupning i dess olika funktioner, besök denna sida!
Det var allt för denna gång, nästa gång ska vi kolla lite på den enda datatypen i Lua som inte är en primitiv (om man räknar bort strängar): tables! Ses då!