Ä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!

Lua-sheriffen

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å!