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.
|
|
|