Suchen von Teilstrings und Mustern in Strings

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Teilstrings sind Zeichenfolgen innerhalb eines Strings. Der String „abc" beispielsweise hat 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 unter Verwenden von regulären Ausdrücken .

Suchen eines Teilstrings nach Zeichenposition

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)); // output: Paris, Texas!!! 
trace(str.substring(11,15)); // output: 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)); // output: Pari 
trace(str.slice(-3,-1)); // output: !! 
trace(str.slice(-3,26)); // output: !!! 
trace(str.slice(-3,str.length)); // output: !!! 
trace(str.slice(-8,-3)); // output: Texas

Bei der slice() -Methode können Sie nicht negative und negative Ganzzahlen als Parameter kombinieren.

Suchen der Zeichenposition eines übereinstimmenden Teilstrings

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")); // output: 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)); // output: 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")); // output: 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)); // output: 21

Erstellen eines durch Trennzeichen unterteilten Arrays von Teilstrings

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 finden Sie unter Verwenden von regulären Ausdrücken und im ActionScript 3.0-Referenzhandbuch für die Adobe Flash-Plattform .

Suchen von Mustern in Strings und Ersetzen von Teilstrings

Die String-Klasse enthält folgende Methoden zum Verwenden von Mustern in Strings:

  • Verwenden Sie die Methoden match() und search() zum Suchen von Teilstrings, die einem Muster entsprechen.

  • Verwenden Sie die 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 unter Verwenden von regulären Ausdrücken .

Suchen von übereinstimmenden Teilstrings

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."; 
// (This search is case-sensitive.) 
trace(str.search("the")); // output: 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 findet 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)); // output: 4 
 
str = "The \"more the merrier."; 
trace(str.search(pattern)); // output: -1  
// (Indicates no match, since there is no closing double quotation mark.)

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 unter Verwenden von regulären Ausdrücken .

Ersetzen von übereinstimmenden Teilstrings

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 unter 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 ( ` ) und nicht das gerade einfache Anführungszeichen ( ' ) oder das linke einfache typografische Anführungszeichen ( ' ) verwendet.

$'

Der Teil des Strings, der nach dem übereinstimmenden Teilstring steht. Für diesen Code wird das gerade einfache Anführungszeichen ( ' ) verwendet.

$ n

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.

$ nn

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.

So zeigt das folgende Beispiel die Verwendung der Ersetzungscodes $2 und $1 , die die erste und zweite erfasste, übereinstimmende 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 = parseFloat(usd) * exchangeRate; 
    const euroSymbol:String = String.fromCharCode(8364); 
    return euro.toFixed(2) + " " + euroSymbol; 
}

Wenn eine Funktion als zweiter Parameter der replace() -Methode verwendet wird, werden die folgenden Argumente an die Funktion übergeben:

  • Der übereinstimmende Teil des Strings

  • Alle übereinstimmenden zwischengespeicherten Gruppen. Die Anzahl der auf diese Weise übergebenen Argumente hängt von der Anzahl der in Klammern eingeschlossenen übereinstimmenden Gruppen ab. Um die Anzahl der Übereinstimmungen mit einer in Klammern eingeschlossene Gruppe zu bestimmen, verwenden Sie arguments.length - 3 innerhalb des Funktionscodes.

  • Die Indexposition im String, an der die Übereinstimmung beginnt.

  • Der vollständige String.