Эффективный способ анализа атрибутов тега <font>с помощью ActionScript 3 - PullRequest
0 голосов
/ 18 июня 2009

Мне интересно, как в ActionScript 3 анализировать атрибуты шрифта строки содержимого в формате HTML. Давайте возьмем следующую примерную строку содержимого:

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

Я бы хотел проанализировать эту строку и создать объект с атрибутами шрифта в ней. Таким образом, результирующий объект будет отслеживать следующее:

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

Я предполагаю, что регулярные выражения - это путь, но я ничего о них не знаю. Мысли?

Ответы [ 2 ]

0 голосов
/ 19 июня 2009

Это то, что я придумал. Это идеальная работа для регулярных выражений:

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

Надеюсь, это поможет.

0 голосов
/ 18 июня 2009

Как насчет использования объекта XML? Например:

var fontnode:XML = new XML(content);
trace(fontnode.@face);
trace(fontnode.@size);
trace(fontnode.@color);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...