Grundlagen von Zeichenketten: Verketten und Länge
Verwenden Sie .. zum Verketten, # für die Länge sowie string.rep/reverse
Grundlagen von Zeichenketten: Verketten und Länge ist eine kostenlose Lua Academy-Lektion auf CoddyKit. Dies ist Lektion 1 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Lua Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Stringverkettung mit ..
Lua verwendet .. (zwei Punkte) für die Stringverkettung. Dies funktioniert mit Strings und Zahlen (Zahlen werden automatisch konvertiert). Anders als + in vielen Sprachen dient + in Lua ausschließlich der Arithmetik – die Verwendung von + für Strings führt zu einem Fehler.
local first = "Hello"
local second = "World"
print(first .. ", " .. second .. "!") -- Hello, World!
-- Numbers auto-converted
local age = 30
print("Age: " .. age) -- Age: 30
-- Bad: print("x" + "y") ERROR: arithmetic on stringLängenoperator #
Der Operator # gibt die Bytelänge eines Strings zurück. Bei ASCII-Strings entspricht dies der Anzahl der Zeichen. Bei mehrbytecodierten UTF-8-Strings zählt # Bytes statt Zeichen – ein UTF-8-Emoji zählt beispielsweise als 4. Verwenden Sie für zeichengetreue Längen eine UTF-8-Bibliothek.
print(#"hello") -- 5
print(#"") -- 0
print(#"café") -- 5 (c,a,f,é=2bytes)
local s = "Lua"
for i = 1, #s do
io.write(string.byte(s, i) .. " ")
end
print() -- 76 117 97string.rep und string.reverse
string.rep(s, n, sep) wiederholt den String s genau n-mal mit einem optionalen Trennzeichen. string.reverse(s) kehrt die Byte-Reihenfolge des Strings um. Beide Funktionen geben neue Strings zurück – Lua-Strings sind unveränderlich.
print(string.rep("ab", 3)) -- ababab
print(string.rep("ha", 3, "-")) -- ha-ha-ha
print(string.rep("x", 0)) -- (empty)
print(string.reverse("hello")) -- olleh
print(string.reverse("12345")) -- 54321string.upper und string.lower
string.upper(s) und string.lower(s) wandeln ASCII-Zeichen um. Sie unterstützen Unicode nicht – Nicht-ASCII-Zeichen bleiben unverändert. Für einen Vergleich ohne Beachtung der Groß-/Kleinschreibung wandeln Sie beide Strings vor dem Vergleich in Kleinbuchstaben um.
print(string.upper("hello")) -- HELLO
print(string.lower("WORLD")) -- world
print(string.upper("Lua 5.4!")) -- LUA 5.4!
-- Case-insensitive comparison
local a = "Hello"
local b = "hello"
print(a:lower() == b:lower()) -- trueSyntax für Methoden mit Doppelpunkt
String-Funktionen können mit der Doppelpunkt-Syntax für String-Werte aufgerufen werden: s:upper() statt string.upper(s). Dies funktioniert, weil Strings eine Metatabelle mit __index = string haben und somit alle Funktionen der String-Bibliothek als Methoden jedes Strings zugänglich sind.
local s = " hello world "
print(s:upper()) -- HELLO WORLD
print(s:len()) -- 15
print(s:rep(2, "|")) -- same as string.rep(s,2,"|")
-- Chain calls
print(("lua"):upper():reverse()) -- AULUnveränderlichkeit von Strings
Lua-Strings sind unveränderlich. Sie können Zeichen nicht direkt ändern. Jede String-Operation erstellt einen neuen String. Verwenden Sie bei umfangreichen Verkettungen in Schleifen eine Tabelle, um die Teile zu sammeln, und am Ende table.concat – dies ist deutlich effizienter als wiederholtes ...
-- Efficient string building
local parts = {}
for i = 1, 5 do
parts[i] = "item" .. i
end
local result = table.concat(parts, ", ")
print(result) -- item1, item2, item3, item4, item5
-- Slow! Creates 5 intermediate strings:
-- local s = ""
-- for i = 1, 5 do s = s .. "item" .. i endtable.concat zum Verbinden
table.concat(t, sep, i, j) verbindet Array-Elemente mit einem Trennzeichen zu einem String. Die Funktion funktioniert nur mit String- und Zahlenwerten – Tabellen oder boolesche Werte führen zu einem Fehler. Dies ist die schnellste Methode, um aus vielen Teilen Strings zu erstellen.
local parts = {"one", "two", "three", "four"}
print(table.concat(parts, ", ")) -- one, two, three, four
print(table.concat(parts, " | ", 2, 3)) -- two | three
-- Building CSV
local row = {1, "Alice", 95, true}
-- Need tostring for non-string values:
for i, v in ipairs(row) do row[i] = tostring(v) end
print(table.concat(row, ","))Stringvergleich
Strings werden lexikografisch anhand ihres Bytewerts verglichen. Großbuchstaben stehen in ASCII vor Kleinbuchstaben (A=65, a=97), daher ist "Z" < "a" wahr. Verwenden Sie auf beiden Seiten string.lower, um eine Sortierung ohne Beachtung der Groß-/Kleinschreibung zu erhalten.
print("abc" < "abd") -- true
print("abc" < "abcd") -- true (shorter)
print("Z" < "a") -- true (Z=90, a=97)
print("10" < "9") -- true (lexicographic!)
print(10 < 9) -- false (numeric)
-- Sort strings case-insensitively
local words = {"Banana","apple","Cherry"}
table.sort(words, function(a,b) return a:lower()<b:lower() end)
print(table.concat(words,", "))tostring und tonumber
tostring(v) konvertiert jeden Wert in seine String-Darstellung. tonumber(s, base)解析iert einen String in eine Zahl. tonumber gibt bei einem fehlgeschlagenen Parsen nil zurück – anders als viele Sprachen, die eine Ausnahme auslösen. Für die Ganzzahlanalyse kann die Basis zwischen 2 und 36 liegen.
print(tostring(42)) -- 42
print(tostring(true)) -- true
print(tostring(nil)) -- nil
print(tostring({1,2})) -- table: 0x...
print(tonumber("3.14")) -- 3.14
print(tonumber("0xff")) -- 255 (hex)
print(tonumber("11",2)) -- 3 (binary)
print(tonumber("abc")) -- nil (invalid)String-Interning
Lua verwendet für kurze Strings Interning: Identischer String-Inhalt wird von demselben Objekt im Speicher gemeinsam genutzt. Dadurch ist == bei Strings nach einer Hash-Prüfung effektiv ein Zeigervergleich – und sehr schnell. String-Interning verursacht bei der Erstellung von Strings einen kleinen Mehraufwand (Hash-Berechnung), aber wiederholte Strings sind kostenlos.
local s1 = "hello"
local s2 = "hel" .. "lo"
-- Same content, interned to same object
print(s1 == s2) -- true
print(#s1) -- 5
-- Long strings may not be interned
-- They are still compared correctly by value
local long1 = string.rep("x", 1000)
local long2 = string.rep("x", 1000)
print(long1 == long2) -- trueKurze Prüfung
Wie bauen Sie in Lua am effizientesten einen langen String aus vielen kleinen Teilen zusammen?
Zusammenfassung: String-Grundlagen
Wichtige Punkte:
..verkettet Strings; verwenden Sie für Strings niemals+#szählt Bytes (keine Unicode-Zeichen)s:upper(),s:lower(),s:rep(n, sep),s:reverse()- Strings sind unveränderlich – jede Operation gibt einen neuen String zurück
- Bauen Sie große Strings mit einer Tabelle und
table.concatzusammen tostring/tonumberfür die Typkonvertierung
Häufig gestellte Fragen
Ist die Lektion „Grundlagen von Zeichenketten: Verketten und Länge“ kostenlos?
Ja — der vollständige Text von „Grundlagen von Zeichenketten: Verketten und Länge“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Lua Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Lua Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „Grundlagen von Zeichenketten: Verketten und Länge“?
Verwenden Sie .. zum Verketten, # für die Länge sowie string.rep/reverse Du übst Lua Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Lua Academy zu starten?
Keine Vorkenntnisse erforderlich. Lua Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 1 von 4.
Wie lange dauert die Lektion „Grundlagen von Zeichenketten: Verketten und Länge“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Lua Academy-Lektion Code schreiben und ausführen?
Ja. Jede Lua Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- Grundlagen von Zeichenketten: Verketten und Länge
- Teilzeichenketten finden und extrahieren
- string.format für Ausgaben
- string.gsub und string.gmatch