Suche nach '.' mit string.find ()

7

Ich versuche, eine einfache String-Manipulation zu machen: den Namen einer Datei ohne die Erweiterung zu erhalten. Nur, string.find() scheint ein Problem mit Punkten zu haben:

%Vor%

Und nur mit Punkten:

%Vor%

Ist das ein Fehler, oder mache ich etwas falsch?

    
user2141781 06.03.2013, 21:21
quelle

3 Antworten

14

string.find() findet standardmäßig keine Strings in Strings, es findet Patterns in Strings. Weitere Informationen finden Sie unter dem Link, aber hier ist der relevante Teil;

  

Das '.' stellt ein Platzhalterzeichen dar, das ein beliebiges Zeichen darstellen kann.

Um die Zeichenfolge . tatsächlich zu finden, muss der Punkt mit einem Prozentzeichen, %.

, versehen werden

EDIT: Alternativ können Sie einige zusätzliche Argumente übergeben, find(pattern, init, plain) , mit denen Sie true als letztes Argument übergeben und nach einfachen Strings suchen können. Das würde deine Aussage machen;

%Vor%     
Joachim Isaksson 06.03.2013 21:33
quelle
7

Mache entweder string.find(s, '%.') oder string.find(s, '.', 1, true)

    
Egor Skriptunoff 06.03.2013 21:57
quelle
3

Die anderen Antworten haben bereits erklärt, was falsch ist. Der Vollständigkeit halber können Sie, wenn Sie nur am Basisnamen der Datei interessiert sind, string.match verwenden. Zum Beispiel:

%Vor%     
greatwolf 07.03.2013 05:49
quelle

Tags und Links