Flash CS3-Dokumentation |
|||
| Programmieren mit ActionScript 3.0 > Verwenden von Strings > Suchen von Teilstrings und Mustern in Strings | |||
Teilstrings sind Zeichenfolgen innerhalb eines Strings. Der String "abc" enthält beispielsweise die folgenden Teilstrings: "", "a", "ab", "abc", "b", "bc", "c". Mithilfe von ActionScript-Methoden können Sie die Teilstrings eines Strings suchen.
Muster sind in ActionScript durch Strings oder reguläre Ausdrücke definiert. Der folgende reguläre Ausdruck legt beispielsweise ein bestimmtes Muster fest: die Buchstaben A, B und C, gefolgt von einer Ziffer (die Schrägstriche werden in regulären Ausdrücken als Trennzeichen verwendet):
/ABC\d/
ActionScript enthält Methoden zum Suchen von Mustern in Strings sowie zum Ersetzen der gefundenen Entsprechungen durch Teilstrings. Diese Methoden werden in den folgenden Abschnitten beschrieben.
Mit regulären Ausdrücken können komplizierte Muster definiert werden. Weitere Informationen finden Sie in Verwenden von regulären Ausdrücken.
Die Methoden substr() und substring() sind sehr ähnlich. Beide geben den Teilstring eines Strings zurück. Bei erwarten zwei Parameter. Bei beiden Methoden ist der erste Parameter die Position des Startzeichens des jeweiligen Strings. Allerdings ist der zweite Parameter bei der substr()-Methode die Länge des zurückzugebenden Teilstrings und bei der substring()-Methode die Position des Zeichens am Ende des Teilstrings (das selbst nicht mehr Bestandteil des zurückgegebenen Strings ist). Im folgenden Beispiel ist der Unterschied zwischen beiden Methoden dargestellt:
var str:String = "Hello from Paris, Texas!!!";
trace(str.substr(11,15)); // Ausgabe: Paris, Texas!!!
trace(str.substring(11,15)); // Ausgabe: Pari
Die slice()-Methode ähnelt der substring()-Methode. Wenn zwei nicht negative Ganzzahlen als Parameter angegeben werden, ist die Funktionsweise identisch. Bei der slice()-Methode können jedoch negative Ganzzahlen als Parameter verwendet werden. Die Zeichenposition wird dann vom Ende des Strings gezählt, wie im folgenden Beispiel dargestellt:
var str:String = "Hello from Paris, Texas!!!";
trace(str.slice(11,15)); // Ausgabe: Pari
trace(str.slice(-3,-1)); // Ausgabe: !!
trace(str.slice(-3,26)); // Ausgabe: !!!
trace(str.slice(-3,str.length)); // Ausgabe: !!!
trace(str.slice(-8,-3)); // Ausgabe: Texas
Bei der slice()-Methode können Sie nicht negative und negative Ganzzahlen als Parameter kombinieren.
Mit den Methoden indexOf() und lastIndexOf() können Sie übereinstimmende Teilstrings in einem String suchen, wie im folgenden Beispiel dargestellt:
var str:String = "The moon, the stars, the sea, the land";
trace(str.indexOf("the")); // Ausgabe: 10
Bei der indexOf()-Methode wird die Groß- und Kleinschreibung beachtet.
Sie können einen zweiten Parameter festlegen, um die Indexposition im String anzugeben, ab der die Suche gestartet wird:
var str:String = "The moon, the stars, the sea, the land"
trace(str.indexOf("the", 11)); // Ausgabe: 21
Mit der lastIndexOf()-Methode wird das letzte Vorkommen eines Teilstrings in einem String gesucht:
var str:String = "The moon, the stars, the sea, the land"
trace(str.lastIndexOf("the")); // Ausgabe: 30
Wenn Sie bei der lastIndexOf()-Methode einen zweiten Parameter einfügen, wird die Suche ab der Indexposition des Strings rückwärts (von rechts nach links) durchgeführt:
var str:String = "The moon, the stars, the sea, the land"
trace(str.lastIndexOf("the", 29)); // Ausgabe: 21
Mithilfe der split()-Methode können Sie ein Array aus Teilstrings erstellen, die anhand eines Trennzeichens unterteilt sind. Sie können beispielsweise einen String, der durch Kommas oder Tabulatoren getrennt ist, in mehrere Strings unterteilen.
Im folgenden Beispiel ist dargestellt, wie ein Array mit dem Und-Zeichen (&) als Trennzeichen in Teilstrings unterteilt wird:
var queryStr:String = "first=joe&last=cheng&title=manager&StartDate=3/6/65";
var params:Array = queryStr.split("&", 2); // params == ["first=joe","last=cheng"]
Der optionale zweite Parameter der split()-Methode definiert die maximale Größe des zurückgegebenen Arrays.
Sie können auch einen regulären Ausdruck als Trennzeichen verwenden:
var str:String = "Give me\t5." var a:Array = str.split(/\s+/); // a == ["Give","me","5."]
Weitere Informationen hierzu finden Sie in Verwenden von regulären Ausdrücken und im Komponenten-Referenzhandbuch für ActionScript 3.0.
Die String-Klasse enthält folgende Methoden zum Verwenden von Mustern in Strings:
match() und search() zum Suchen von Teilstrings, die einem Muster entsprechen.replace()-Methode, um Teilstrings zu suchen, die einem Muster entsprechen, und sie durch den angegebenen Teilstring zu ersetzen.Diese Methoden werden in den folgenden Abschnitten beschrieben.
Sie können die bei diesen Methoden verwendeten Muster mithilfe von Strings oder regulären Ausdrücken definieren. Weitere Informationen zu regulären Ausdrücken finden Sie in Verwenden von regulären Ausdrücken.
Die search()-Methode gibt die Indexposition des ersten Teilstrings zurück, der einem bestimmten Muster entspricht, wie im folgenden Beispiel dargestellt:
var str:String = "The more the merrier.";
// (Bei dieser Suche wird die Groß- und Kleinschreibung beachtet.)
trace(str.search("the")); // Ausgabe: 9
Sie können auch mithilfe regulärer Ausdrücke das entsprechende Muster festlegen:
var pattern:RegExp = /the/i; var str:String = "The more the merrier."; trace(str.search(pattern)); // 0
Von der trace()-Methode wird 0 zurückgegeben, da sich das erste Zeichen des Strings an Indexposition 0 befindet. Im regulären Ausdruck ist das i-Flag gesetzt, sodass die Groß- und Kleinschreibung bei der Suche nicht beachtet wird.
Die search()-Methode sucht nur eine Entsprechung und gibt die zugehörige Indexposition zurück, auch wenn im regulären Ausdruck das g-Flag (global) gesetzt ist.
Im folgenden Beispiel ist ein komplizierterer regulärer Ausdruck dargestellt, der in doppelte Anführungszeichen eingeschlossene Strings findet:
var pattern:RegExp = /"[^"]*"/; var str:String = "The \"more\" the merrier."; trace(str.search(pattern)); // Ausgabe: 4 str = "The \"more the merrier."; trace(str.search(pattern)); // Ausgabe: -1 // (Findet keine Übereinstimmung, da das schließende doppelte Anführungszeichen fehlt.)
Mit der match()-Methode wird auf ähnliche Weise ein übereinstimmender Teilstring gesucht. Bei Verwendung des global-Flags in regulären Ausdrücken (siehe folgendes Beispiel) wird mit der match()-Methode jedoch ein Array übereinstimmender Teilstrings zurückgegeben:
var str:String = "bob@example.com, omar@example.org"; var pattern:RegExp = /\w*@\w*\.[org|com]+/g; var results:Array = str.match(pattern);
Das results-Array enthält folgende Werte:
["bob@example.com","omar@example.org"]
Weitere Informationen zu regulären Ausdrücken finden Sie in Verwenden von regulären Ausdrücken.
Mithilfe der replace()-Methode können Sie ein bestimmtes Muster in einem String suchen und Übereinstimmungen durch den angegebenen String ersetzen, wie im folgenden Beispiel dargestellt:
var str:String = "She sells seashells by the seashore.";
var pattern:RegExp = /sh/gi;
trace(str.replace(pattern, "sch"));
//sche sells seaschells by the seaschore.
Bei den übereinstimmenden Strings in diesem Beispiel wird die Groß- und Kleinschreibung nicht berücksichtigt, da im regulären Ausdruck das i-Flag (ignoreCase) gesetzt ist. Zudem werden alle Entsprechungen ersetzt, da das g-Flag (global) gesetzt ist. Weitere Informationen finden Sie in Verwenden von regulären Ausdrücken.
Sie können die folgenden $-Ersetzungscodes im Ersetzungsstring einfügen. Anstelle des $-Ersetzungscodes wird jeweils der in der folgenden Tabelle aufgeführte Ersetzungstext eingefügt:
|
$-Code |
Ersetzungstext |
|---|---|
|
|
$ |
|
|
Der übereinstimmende Teilstring. |
|
|
Der Teil des Strings, der vor dem übereinstimmenden Teilstring steht. Für diesen Code wird das nach links gerichtete gerade Anführungszeichen ( |
|
|
Der Teil des Strings, der nach dem übereinstimmenden Teilstring steht. Für diesen Code wird das gerade einfache Anführungszeichen ( |
|
|
Die n. zwischengespeicherte, in Klammern eingeschlossene Gruppe, wobei n für eine Ziffer zwischen 1 und 9 steht und nach $n keine weitere Dezimalziffer folgt. |
|
|
Die nn. erfasste, in Klammern eingeschlossene übereinstimmende Gruppe, wobei nn für eine zweistellige Dezimalzahl zwischen 01 und 99 steht. Wenn der nn. erfasste Wert nicht definiert ist, ist der Ersetzungstext ein leerer String. |
Im folgenden Beispiel ist die Verwendung der Ersetzungscodes $2 und $1 dargestellt, die die erste und zweite übereinstimmende zwischengespeicherte Gruppe repräsentieren:
var str:String = "flip-flop"; var pattern:RegExp = /(\w+)-(\w+)/g; trace(str.replace(pattern, "$2-$1")); // flop-flip
Sie können als zweiten Parameter der replace()-Methode auch eine Funktion verwenden. Der übereinstimmende Text wird durch den zurückgegebenen Wert der Funktion ersetzt.
var str:String = "Now only $9.95!"; var price:RegExp = /\$([\d,]+.\d+)+/i; trace(str.replace(price, usdToEuro)); function usdToEuro(matchedSubstring:String,
capturedMatch1:String,
index:int,
str:String):String { var usd:String = capturedMatch1; usd = usd.replace(",", ""); var exchangeRate:Number = 0.853690; var euro:Number = usd * exchangeRate; const euroSymbol:String = String.fromCharCode(8364); return euro.toFixed(2) + " " + euroSymbol; }
Bei Verwendung einer Funktion als zweiten Parameter der replace()-Methode werden die folgenden Argumente an die Funktion übergeben:
arguments.length - 3 überprüfen.Flash CS3
Eine E-Mail an mich senden, wenn dieser Seite Kommentare hinzugefügt werden | Kommentarbericht
Aktuelle Seite: http://livedocs.adobe.com/flash/9.0_de/main/00000084.html