2009-04-20 6 views
0

Wie kann ich das erreichen in Actionscript (zB in C#):Split eine Zeichenfolge in ActionScript?

string[] arr = { "1.a", "2.b", "3.d", "4.d", "5.d" }; 
int countD = 0; 

for (int i = 0; i < arr.Length; i++) 
{ 
    if (arr[i].Contains("d")) countD++; 
} 

Ich brauche ein Zeichen in einem Array von Strings auf einem JavaScript-String die match Funktion

Antwort

0

Hier sind vier Möglichkeiten, es zu tun ... (na ja, 3.something)

var myString:String = "The quick brown fox jumped over the lazy " 
      + "dog. The quick brown fox jumped over the lazy dog."; 
var numOfD:int = 0; 

// 1# with an array.filter 
numOfD = myString.split("").filter(
      function(s:String, i:int, a:Array):Boolean { 
       return s.toLowerCase() == "d" 
      } 
     ).length; 

trace("1# counts ", numOfD); // output 1# counts 4 


// 2# with regex match 
numOfD = myString.match(/d/gmi).length; 
trace("2# counts ", numOfD); // output 2# counts 4 

// 3# with for loop 
numOfD = 0; 
for (var i:int = 0; i < myString.length;) 
    numOfD += (myString.charAt(++i).toLocaleLowerCase() == "d"); 
trace("3# counts ", numOfD); // output 3# counts 4 

// 4# with a new prototype function (and regex) 
String['prototype'].countOf = 
    function(char:String):int { 
     return this.match(new RegExp(char, "gmi")).length; 
    }; 
// -- compiler 'strict mode' = true 
numOfD = myString['countOf']("d"); 
trace("4# counts ", numOfD); // output 4# counts 4 
// -- compiler 'strict mode' = false 
numOfD = myString.countOf("d"); 
trace("4# counts ", numOfD); // output 4# counts 4 
+0

erwähnen stackoverflow Code-Parser ist fehlgeschlagen –

2

Versuchen Sie folgendes:

for(var i:int = 0; i < arr.Length; i++) 
{ 
    if(arr[i].indexOf("d") != -1) 
     countD++; 
} 

Verwenden indexOf statt enthält. Es gibt -1 zurück, wenn das Zeichen nicht in der Zeichenfolge enthalten ist, andernfalls enthält die Zeichenfolge mindestens eine Instanz.

+0

danke für den Punkt, obwohl ich dies in actionscript2 (flash8) tun müssen – callisto

+0

Nach Adobe, IndexOf wurde so weit zurück wie Flash 5 unterstützt: http://www.adobe.com/support/flash/action_scripts/actionscript_dictionary /actionscript_dictionary692.html –

+0

Sie müssen die Actionscript 2 Anforderung in Ihrer Frage –

0

es gefunden:

var searchString:String = "Lorem ipsum dolor sit amet."; 
var index:Number; 

index = searchString.indexOf("L"); 
trace(index); // output: 0 

index = searchString.indexOf("l"); 
trace(index); // output: 14 

index = searchString.indexOf("i"); 
trace(index); // output: 6 

index = searchString.indexOf("ipsum"); 
trace(index); // output: 6 

index = searchString.indexOf("i", 7); 
trace(index); // output: 19 

index = searchString.indexOf("z"); 
trace(index); // output: -1