Dizelerdeki alt dizeleri ve desenleri bulmaFlash Player 9 ve üstü, Adobe AIR 1.0 ve üstü Alt dizeler, bir dize içindeki sıralı karakterlerdir. Örneğin, "abc" dizesi şu alt dizelere sahiptir: "", "a", "ab", "abc", "b", "bc", "c". Bir dizenin alt dizelerini bulmak için ActionScript yöntemlerini kullanabilirsiniz. Desenler, ActionScript'te dizelerle veya normal ifadelerle tanımlanır. Örneğin, şu normal ifade belirli bir deseni tanımlar—ardından bir rakam karakterinin geldiği A, B ve C harfleri (normal ifade sınırlayıcıları, eğik çizgilerdir): /ABC\d/ ActionScript, dizelerdeki desenlerin bulunmasına ve bulunan eşleşmelerin yerini alan alt dizelerlerle değiştirilmesine yönelik yöntemler içerir. Bunlar ilerleyen bölümlerde açıklanmaktadır. Normal ifadeler karmaşık desenleri tanımlayabilir. Daha fazla bilgi için, bkz. Normal ifadeler kullanma. Karakter konumuna göre bir alt dizeyi bulmasubstr() ve substring() yöntemleri birbirine benzer. Her ikisi de bir dizenin alt dizesini döndürür. Her ikisi de iki parametre alır. Her iki yöntemde de birinci parametre, belirli bir dizedeki başlangıç karakterinin konumudur. Ancak, substr() yönteminde ikinci parametre, döndürülecek alt dizenin uzunluğuyken, substring() yönteminde ikinci parametre, alt dizenin sonundaki karakterin (döndürülen dizeye dahil edilmeyen) konumudur. Bu örnek, bu iki yöntem arasındaki farkı gösterir: var str:String = "Hello from Paris, Texas!!!"; trace(str.substr(11,15)); // output: Paris, Texas!!! trace(str.substring(11,15)); // output: Pari slice() yöntemi, substring() yöntemine benzer şekilde çalışır. Parametre olarak iki tane negatif olmayan tam sayı verildiğinde tamamen aynı çalışır. Ancak, slice() yöntemi negatif tam sayıları parametre olarak alabilir ve bu durumda aşağıdaki örnekte gösterildiği gibi, karakter konumu dizenin sonundan alınır: 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 slice() yönteminin parametreleri olarak negatif olmayan tam sayılarla negatif tam sayıları birleştirebilirsiniz. Eşleşen bir alt dizenin karakter konumunu bulmaAşağıdaki örnekte gösterildiği gibi, bir dizedeki eşleşen alt dizeleri bulmak için indexOf() ve lastIndexOf() yöntemlerini kullanabilirsiniz: var str:String = "The moon, the stars, the sea, the land"; trace(str.indexOf("the")); // output: 10 indexOf() yönteminin büyük/küçük harf duyarlı olduğuna dikkat edin. Aşağıdaki gibi, aramanın başlatılacağı dizedeki dizin konumunu belirtmek için ikinci bir parametre belirtebilirsiniz: var str:String = "The moon, the stars, the sea, the land" trace(str.indexOf("the", 11)); // output: 21 lastIndexOf() yöntemi, dizedeki alt dizenin en son geçtiği yeri bulur: var str:String = "The moon, the stars, the sea, the land" trace(str.lastIndexOf("the")); // output: 30 lastIndexOf() yöntemine ikinci bir parametre dahil ederseniz, arama geriye doğru çalışacak şekilde (sağdan sola) dizedeki dizin konumundan yürütülür: var str:String = "The moon, the stars, the sea, the land" trace(str.lastIndexOf("the", 29)); // output: 21 Alt dizelerin sınırlayıcıyla bölünmüş bir dizisini oluşturmaAlt dizelerin sınırlayıcı esas alınarak bölünmüş bir dizisini oluşturmak için split() yöntemini kullanabilirsiniz. Örneğin, virgül sınırlı veya sekme sınırlı dizeyi birden çok dizeye bölebilirsiniz. Aşağıdaki örnekte, sınırlayıcı olarak ve (&) karakterinin kullanılmasıyla bir dizinin nasıl alt dizelere bölündüğü gösterilmektedir: var queryStr:String = "first=joe&last=cheng&title=manager&StartDate=3/6/65"; var params:Array = queryStr.split("&", 2); // params == ["first=joe","last=cheng"] split() yönteminin isteğe bağlı olan ikinci parametresi, döndürülen dizinin maksimum boyutunu tanımlar. Normal bir ifadeyi de sınırlayıcı olarak kullanabilirsiniz: var str:String = "Give me\t5." var a:Array = str.split(/\s+/); // a == ["Give","me","5."] Daha fazla bilgi için bkz. Normal ifadeler kullanma ve Adobe Flash Platformu için ActionScript 3.0 Başvurusu. Dizelerdeki desenleri bulma ve alt dizeleri değiştirmeString sınıfı, dizelerdeki desenlerle çalışılmasına yönelik şu yöntemleri içerir:
Bunlar ilerleyen bölümlerde açıklanmaktadır. Bu yöntemlerde kullanılan desenleri tanımlamak için dizeleri veya normal ifadeleri kullanabilirsiniz. Normal ifadeler hakkında daha fazla bilgi için, bkz. Normal ifadeler kullanma. Eşleşen alt dizeleri bulmasearch() yöntemi, bu örnekte gösterildiği gibi, belirli bir desenle eşleşen birinci alt dizenin dizin konumunu döndürür: var str:String = "The more the merrier."; // (This search is case-sensitive.) trace(str.search("the")); // output: 9 Bu örnekte gösterildiği gibi, eşleşen deseni tanımlamak için normal ifadeleri kullanabilirsiniz: var pattern:RegExp = /the/i; var str:String = "The more the merrier."; trace(str.search(pattern)); // 0 Dizedeki birinci karakter 0 dizin konumunda olduğundan, trace() yönteminin çıktısı 0'dır. i bayrağı normal ifadede ayarlanır, bu nedenle arama büyük/küçük harf duyarlı değildir. Normal ifadede g (genel) bayrağı ayarlanmış olsa da, search() yöntemi yalnızca bir eşleşme bulur ve bunun başlangıç dizin konumunu döndürür. Aşağıdaki örnek, tırnak işareti içindeki bir dizeyle eşleşen, daha karmaşık bir normal ifadeyi gösterir: 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.) match() yöntemi benzer şekilde çalışır. Eşleşen bir alt dizeyi arar. Ancak, aşağıdaki örnekte olduğu gibi, normal ifade deseninde genel bayrağını kullandığınızda, match() yöntemi, eşleşen alt dizelerin bir dizisini döndürür: var str:String = "bob@example.com, omar@example.org"; var pattern:RegExp = /\w*@\w*\.[org|com]+/g; var results:Array = str.match(pattern); results dizisi şu şekilde ayarlanır: ["bob@example.com","omar@example.org"] Normal ifadeler hakkında daha fazla bilgi için, bkz. Normal ifadeler kullanma. Eşleşen alt dizeleri değiştirmeBir dizedeki belirtilen bir deseni aramak ve eşleşmeleri, belirtilen yerini alan dizeyle değiştirmek için, aşağıdaki örnekte gösterildiği gibi, replace() yöntemini kullanabilirsiniz: 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. Normal ifadede i (ignoreCase) bayrağı ayarlanmış olduğundan, eşleşen dizelerin büyük/küçük harf duyarlı olmadığını ve g (global) bayrağı ayarlanmış olduğundan, birden çok eşleşmenin değiştirildiğini unutmayın. Daha fazla bilgi için, bkz. Normal ifadeler kullanma. Yerini alan dizeye şu $ yerini alma kodlarınıdahil edebilirsiniz. Aşağıdaki tabloda gösterilen yerini alan metin, $ yerini alma kodunun yerine eklenir:
Örneğin, aşağıda, eşleşen birinci ve ikinci yakalama grubunu temsil eden$2 ve $1 yerini alma kodlarının kullanımını göstermektedir: var str:String = "flip-flop"; var pattern:RegExp = /(\w+)-(\w+)/g; trace(str.replace(pattern, "$2-$1")); // flop-flip Bir işlevi replace() yönteminin ikinci parametresi olarak da kullanabilirsiniz. Eşleşen metin, işlevin döndürülen değeriyle değiştirilir. 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; } Bir işlevi, replace() yönteminin ikinci parametresi olarak kullandığınızda, şu argümanlar işleve iletilir:
|
|