Returnera delsträngar och mönster i strängarFlash Player 9 och senare, Adobe AIR 1.0 och senare Delsträngar är sekventiella tecken inom en sträng. Exempelvis har strängen "abc" följande delsträngar: "", "a", "ab", "abc", "b", "bc", "c". Du kan använda metoder i ActionScript för att söka efter delsträngar i en sträng. Mönster definieras med strängar eller reguljära uttryck i ActionScript. I följande reguljära uttryck definieras t.ex. ett specifikt mönster; bokstäverna A, B och C följt av ett digitalt tecken (snedstreck är avgränsare i reguljära uttryck): /ABC\d/ I ActionScript finns metoder för att söka efter mönster i strängar och ersätta träffarna med delsträngar. Dessa metoder beskrivs i följande avsnitt. Med hjälp av reguljära uttryck kan du definiera komplicerade mönster. Mer information om publicering finns i Använda reguljära uttryck. Returnera en delsträng via teckenpositionMetoderna substr() och substring() används på liknande sätt. Båda returnerar en delsträng av en sträng. Båda används med två parametrar. I båda metoderna anger den första parametern startpositionen i strängen. Däremot anger den andra parametern i substr()-metoden längden på delsträngen som ska returneras och i substring()-metoden anger den andra parametern positionen för delsträngens slut-tecken (vilket inte ingår i den returnerade strängen). I detta exempel visas skillnaden mellan de båda metoderna: var str:String = "Hello from Paris, Texas!!!"; trace(str.substr(11,15)); // output: Paris, Texas!!! trace(str.substring(11,15)); // output: Pari Metoden slice() fungerar på liknande sätt som metoden substring(). Om två positiva heltal anges som parametrar fungerar det på exakt samma sätt. Metoden slice() kan däremot användas med negativa heltal som parametrar och då tas teckenpositionen från strängens slut: 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 Du kan kombinera icke-negativa och negativa heltal som parametrar i metoden slice(). Returnera teckenpositionen för en matchande delsträngDu kan använda metoderna indexOf() och lastIndexOf() för att söka efter matchande delsträngar inom en sträng, enligt följande exempel: var str:String = "The moon, the stars, the sea, the land"; trace(str.indexOf("the")); // output: 10 Observera, att metoden indexOf() är skiftlägeskänslig. Du kan ange en andra parameter som anger på vilken indexposition i strängen sökningen ska börja: var str:String = "The moon, the stars, the sea, the land" trace(str.indexOf("the", 11)); // output: 21 Metoden lastIndexOf() söker efter den sista instansen av en delsträng i strängen: var str:String = "The moon, the stars, the sea, the land" trace(str.lastIndexOf("the")); // output: 30 Om du inkluderar en andra parameter med metoden lastIndexOf() utförs sökningen från den indexpositionen i strängen och bakåt (höger till vänster): var str:String = "The moon, the stars, the sea, the land" trace(str.lastIndexOf("the", 29)); // output: 21 Skapa en array med delsträngar segmenterad via avgränsareDu kan använda metoden split() för att skapa en array med delsträngar, vilken delas upp baserat på ett avgränsningstecken. Du kan t.ex. segmentera en komma- eller tabbavgränsad sträng i flera strängar. I följande exempel delas en array upp i delsträngar med et-tecknet (&) som avgränsare: var queryStr:String = "first=joe&last=cheng&title=manager&StartDate=3/6/65"; var params:Array = queryStr.split("&", 2); // params == ["first=joe","last=cheng"] Med den andra, valfria, parametern i metoden split() definieras arrayens maximala storlek som returneras. Du kan även använda ett reguljärt uttryck som avgränsningstecken. var str:String = "Give me\t5." var a:Array = str.split(/\s+/); // a == ["Give","me","5."] Läs mer i Använda reguljära uttryck och Referenshandbok för ActionScript 3.0 i Adobe Flash-plattformen. Returnera mönster i strängar och ersätta delsträngarI klassen String ingår följande metoder för arbetet med mönster i strängar:
Dessa metoder beskrivs i följande avsnitt. Du kan använda strängar eller reguljära uttryck för att definiera mönster som används i dessa metoder. Mer information om reguljära uttryck finns i Använda reguljära uttryck. Returnera matchande delsträngarMetoden search() returnerar indexpositionen för den första delsträngen som matchar ett givet mönster, enligt följande exempel: var str:String = "The more the merrier."; // (This search is case-sensitive.) trace(str.search("the")); // output: 9 Du kan även använda reguljära uttryck för att definiera mönstret: var pattern:RegExp = /the/i; var str:String = "The more the merrier."; trace(str.search(pattern)); // 0 Utdata för metoden trace() är 0, eftersom det första tecknet i strängen är indexpositionen 0. Genom att flaggan i anges i det reguljära uttrycket är sökningen inte skiftlägeskänslig. Metoden search() hittar endast en matchning och returnerar motsvarande startindexposition, även om den globala flaggan g anges i det reguljära uttrycket. I följande exempel visas ett mer komplicerat reguljärt uttryck som matchar en sträng inom citattecken: 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.) Metoden match() fungerar på liknande sätt. Den söker efter en matchande delsträng. När du däremot använder den globala flaggan i ett mönster med reguljärt uttryck så returnerar match() en array med matchande delsträngar, enligt följande: var str:String = "bob@example.com, omar@example.org"; var pattern:RegExp = /\w*@\w*\.[org|com]+/g; var results:Array = str.match(pattern); Arrayen results anges enligt följande: ["bob@example.com","omar@example.org"] Mer information om reguljära uttryck finns i Använda reguljära uttryck. Ersätta matchade delsträngarDu kan använda metoden replace() för att söka efter ett specifikt mönster i en sträng och ersätta matchningar med angiven sträng, enligt följande exempel: 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. Observera, att i exemplet är de matchade strängarna inte skiftlägeskänsliga eftersom flaggan i (ignoreCase) anges i det reguljära uttrycket. Flera matchningar ersätts därför att flaggan g (global) anges. Mer information om publicering finns i Använda reguljära uttryck. Du kan inkludera följande $-ersättningskoder i ersättningssträngen. Ersättningstexten som visas i följande tabell infogas när ersättningskoden $påträffas.
I följande exempel visas användningen av ersättningskoderna $2 och $1 som representerar den första och andra hämtade gruppen som matchar varandra: var str:String = "flip-flop"; var pattern:RegExp = /(\w+)-(\w+)/g; trace(str.replace(pattern, "$2-$1")); // flop-flip Du kan även använda en funktion som den andra parametern i metoden replace(). Den matchande texten ersätts med funktionens returnerade värde. 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; } Om du använder en funktion som den andra parametern för metoden replace() så skickas följande argument till funktionen:
|
|