Suche nach '.' mit string.finden()
Ich versuche, um eine einfache string-manipulation: immer den Dateinamen ohne die Erweiterung. Nur string.find()
zu haben scheinen ein Problem mit Punkten:
s = 'crate.png'
i, j = string.find(s, '.')
print(i, j) --> 1 1
Und nur mit Punkten:
s = 'crate.png'
i, j = string.find(s, 'p')
print(i, j) --> 7 7
Ist das ein bug, oder mache ich etwas falsch?
- Siehe Wie string.finden Sie die eckige Klammer in lua. Obwohl es bezieht sich auf eine andere Sonderzeichen, die Lösung ist die gleiche.
Du musst angemeldet sein, um einen Kommentar abzugeben.
string.find()
standardmäßig nicht finden, strings in strings findet es Muster in strings. Mehr vollständige Infos finden Sie unter dem link, aber hier ist der relevante Teil;Tatsächlich finden die Zeichenfolge
.
, die Zeit muss escaped werden mit einem Prozentzeichen,%.
EDIT: Alternativ können Sie übergeben, einige zusätzliche Argumente, die
find(pattern, init, plain)
welche Ihnen erlaubt, zu passieren, intrue
als letztes argument und die Suche nach einfachen strings. Das würde deiner Aussage;%
, nicht\
. Versuchen, verwenden Sie einen umgekehrten Schrägstrich wird wahrscheinlich geben Sie eine "ungültige escape-Sequenz" - Fehler.Tun, entweder
string.find(s, '%.')
oderstring.find(s, '.', 1, true)
Den anderen Antworten bereits erklärt, was falsch ist. Für Vollständigkeit, wenn Sie nur daran interessiert sind, in der Datei Basis-Namen, die Sie verwenden können
string.match
. Zum Beispiel: