Bezeichnung
PatternReplaceStr -- ändert die Zeichenfolge unter Verwendung von Musterübereinstimmungen (V5.0)
Übersicht
r$, n = PatternReplaceStr(s$, pat$, repl[, n, encoding])
Beschreibung
PatternReplaceStr() kann verwendet werden, um den Inhalt einer Zeichenkette mit Hilfe eines Musters zu ändern. Dieser Befehl ist leistungsfähig und kann für alle Arten von Zeichenkettenoperationen verwendet werden. Sie gibt eine Kopie von s$ zurück, in der alle Vorkommen des Musters pat$ durch eine in repl angegebene Zeichenfolge ersetzt wurden. PatternReplaceStr() gibt im zweiten Wert n die Gesamtzahl der Ersetzungen zurück.

Das dritte Argument repl kann entweder eine Zeichenfolge oder eine Callback-Funktion sein. Wenn repl eine Zeichenkette ist, wird sein Wert als Ersatz verwendet. Jede Sequenz in repl der Form n%, mit n zwischen 1 und 9, steht für den Wert der n-ten Übereinstimmung der Teilzeichenkette (siehe unten). Wenn repl eine Funktion ist, wird diese Funktion jedes Mal aufgerufen, wenn eine Übereinstimmung stattfindet, wobei alle übereinstimmenden Teilzeichenketten als Argumente übergeben werden; Wenn das Muster keine Teilmuster enthält, wird die gesamte Übereinstimmung als einziges Argument übergeben. Wenn der von diesem Befehl zurückgegebene Wert eine Zeichenkette ist, wird er als Ersatzzeichenfolge verwendet; Andernfalls ist die Ersatzzeichenfolge die leere Zeichenkette.

Das optionale vierte Argument n begrenzt die maximale Anzahl der auftretenden Ersetzungen. Zum Beispiel wird, wenn n 1 ist, nur das erste Auftreten von pat$ ersetzt.

Das in pat$ angegebene Muster besteht aus einer Folge von Musterelementen. Ein Musterelement ist normalerweise eine Zeichenklasse, die wiederum einen Satz von Zeichen darstellt. Folgende Kombinationen sind bei der Beschreibung einer Zeichenklasse erlaubt:

x (wobei x keines der magischen Steuerzeichen ^$()%.[]*+-? ist)
Repräsentiert das Zeichen x selbst.
. (ein Punkt)
Stellt alle Zeichen dar.
%a
Stellt alle Buchstaben dar.
%c
Stellt alle Steuerzeichen dar.
%d
Stellt alle Ziffern dar.
%g
Steht für alle Zeichen, die eine grafische Darstellung haben. (V7.0)
%l
Stellt alle Kleinbuchstaben dar.
%p
Stellt alle Satzzeichen dar.
%s
Stellt alle Leerzeichen dar.
%u
Stellt alle Großbuchstaben dar.
%w
Stellt alle alphanumerischen Zeichen dar.
%x
Stellt alle hexadezimalen Ziffern dar.
%z
Repräsentiert das Zeichen mit Darstellung 0.
%x (wobei x ein nicht-alphanumerisches Zeichen ist)
Stellt das Zeichen x dar. Dies ist der Standardweg, um die magischen Steuerzeichen zu umgehen. Jedes Interpunktionszeichen (auch die Nicht-Steuerzeichen) kann mit einem % vorangestellt werden, um sich selbst in einem Muster darzustellen.
[set]
Stellt die Klasse dar, die die Vereinigung aller Zeichen in set ist. Eine Reihe von Zeichen kann durch Trennung der Endzeichen des Bereichs mit einem - angegeben werden. Alle oben beschriebenen %x Klassen können auch als Komponenten in set verwendet werden. Alle anderen Zeichen in set repräsentieren sich selber. Beispielsweise repräsentiert [%w_] (oder [_%w]) alle alphanumerischen Zeichen plus Unterstrich, [0-7] die oktalen Ziffern und [0-7%l%-] die Oktalziffern plus Kleinbuchstaben und das Zeichen -. Die Interaktion zwischen Bereichen und Klassen ist nicht definiert. Daher haben Muster wie [%a-z] oder [a-%%] keine Bedeutung.
[^set]
Stellt das Gegenteil von set dar, wobei set wie oben interpretiert wird.

Für alle Klassen, die durch einzelne Buchstaben (%a, %c, etc.) dargestellt werden, stellt der entsprechende Großbuchstabe das Gegenteil der Klasse dar. Beispielsweise stellt %S alle Nicht-Leerzeichen dar.

Die folgenden Elemente sind gültige Musterelemente:

Ein Muster ist eine Folge von Musterelementen. Ein ^ am Anfang eines Musters verankert die Übereinstimmung am Anfang der Objektzeichenfolge. Ein $ am Ende eines Musters verankert die Übereinstimmung am Ende der Objektzeichenfolge. An anderen Stellen haben ^ und $ keine besondere Bedeutung und stellen sich selber dar.

Ein Muster kann Teilmuster enthalten, die in Klammern eingeschlossen sind; sie beschreiben die Teilübereinstimmung. Wenn eine Übereinstimmung erfolgreich ist, werden die Teilzeichenfolgen der Objektzeichenfolge, die mit den Aufzeichnungen übereinstimmen, für zukünftige Verwendung gespeichert (erfasst). Übereinstimmungen werden nach ihrer linken Klammern numeriert. Zum Beispiel wird in dem Muster "(a*(.)%w(%s*))" der Teil der Zeichenfolge, der mit a*(.)%w(%s*) übereinstimmt, die Nummer 1 erhalten; Die Zeichenübereinstimmung mit . erhält die Zahl 2 und die Teilübereinstimmung %s* hat die Nummer 3.

Als Sonderfall erfasst das leere () die aktuelle Zeichenkettenposition (eine Zahl). Wenn wir zum Beispiel das Muster ()aa() auf die Zeichenfolge "flaaap" anwenden, gibt es zwei Positionszahlen: 3 und 5.

Ein Muster darf keine eingebetteten Nullen enthalten. Verwenden Sie stattdessen %z.

Mit dem optionalen Parameter encoding kann die zu verwendende Zeichencodierung festgelegt werden. Dies ist standardmäßig auf die Standardcodierung eingestellt, die mit SetDefaultEncoding() eingestellt ist. Siehe Zeichencodierungen für Details.

Siehe auch PatternFindStr(), PatternFindStrDirect() und PatternFindStrShort().

Eingaben
s$
Zeichenkette
pat$
Muster, nach dem die Zeichenkette s$ geändert werden soll
repl
Ersetzungszeichenkette oder Callback-Funktion, um das Ersetzen zu behandeln (siehe oben)
n
optional: Höchstzahl der Ersetzungen (Voreingestellt ist die Länge von s$ plus 1)
encoding
optional: Zeichencodierung, welche verwendet wird (voreingestellt ist die Standardcodierung) (V7.0)
Rückgabewerte
r$
resultierende Zeichenfolge
n
Anzahl der Ersetzungen
Beispiel
s$ = PatternReplaceStr("Hello World", "(%w+)", "%1 %1")
Der obige Code gibt "Hello Hello World World" zurück.


s$ = PatternReplaceStr("Hello World from Hollywood", "(%w+)%s*(%w+)",
     "%2 %1")
Dieser Code gibt "World Hello Hollywood from" zurück.


s$ = PatternReplaceStr("home = $HOME, user = $USER", "%$(%w+)", GetEnv)
Dieses Beispiel gibt "home = /home/andreas, user = andreas" zurück (auf Linux).


Local t = {name = "Hollywood", version="5.0"}
s$ = PatternReplaceStr("$name_$version.jpg", "%$(%w+)", Function(v)
     Return(t[v]) EndFunction)
Diesmal wird "Hollywood_5.0.jpg" zurückgegeben.

Navigation zeigen