2009-06-18 6 views
0

Je suis curieux de savoir comment, dans ActionScript 3, analyser les attributs de police d'une chaîne de contenu au format HTML. Permet de prendre la chaîne de contenu exemple suivant:Méthode efficace pour analyser un attribut de balise <font> à l'aide d'ActionScript 3

var content:String = '<font face="Archer-Bold" size="12" color="#000000">My Content</font>'; 

Je voudrais analyser cette chaîne et créer un objet avec les attributs de police en elle. Ainsi, un objet qui en résulte traçait ce qui suit:

trace(fontInfo.name); // output: "Archer-Bold" 
trace(fontInfo.size); // output: "12" 
trace(fontInfo.color); // output: "#000000" 

Je devine que les expressions régulières est le chemin à parcourir, mais je ne sais rien à leur sujet. Pensées?

Répondre

0

Voici ce que j'ai trouvé. C'est le travail idéal pour les expressions régulières:

<?xml version="1.0" encoding="utf-8"?> 
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" 
    creationComplete="onComplete();"> 

    <mx:Script> 
     <![CDATA[ 
      import mx.controls.Alert; 
      import mx.utils.ObjectUtil; 
      private var targets:Array = new Array(); 
      private function onComplete():void { 

       var face:String = null; 
       var size:String = null; 
       var color:String = null; 

       var content:String = '<font face="Archer-Bold" size="12" color="#000000">My <br> Content</font>'; 

       // since the content has invalid XML <br> tag XML construction will fail: 
       //var x:XML = new XML(content); 

       var faces:Array = content.match(/face\s*=\s*["'](.[^"']*)["']/); 
       // array is null if no matches found: 
       if (faces != null) { 
        face = faces[1]; 
       } 

       var sizes:Array = content.match(/size\s*=\s*["'](\d{1,})["']/); 
       // array is null if no matches found: 
       if (sizes != null) { 
        size = sizes[1]; 
       } 

       var colors:Array = content.match(/color\s*=\s*["'](.[^"']*)["']/); 
       // array is null if no matches found: 
       if (colors != null) { 
        color = colors[1]; 
       } 

       Alert.show("Font : " + face + ", " + size + ", " + color + "."); 
      } 
     ]]> 
    </mx:Script> 

</mx:WindowedApplication> 

Hope that helps.

Questions connexes