flash与字符串:抽离安卓xml描述文件ID

第一次接触android 时候,为了加快自己敲打速度,尝试这个正则去匹配id取值。
写这个主要的目的是尝试学习使用这个正则,使用这种方式钱匹配里面字符串内容。 <(.*?)\” 这种方式去匹配一个组件类型。
但是这种字符串很受格式影响,一个空格也好换行也好也会影响抽离的结果。对于一些需求,还是要好好把握其方向可以做到什么程度。

下面做了一个小工具。对于这些声明 可以快速地 处理。既学习正则也可以体现一下这种与字符串打交道乐趣。

使用AIR 可以做的更加极致一点很方便去调用。

这里写图片描述

import flash.text.*;
var codeText:TextField  = new TextField();
codeText.text = "粘贴Egret代码";
codeText.width = 736.95;
codeText.height = 223.85;
codeText.type = TextFieldType.INPUT;
codeText.border = true;
codeText.x = 25;
codeText.y = 20;
codeText.multiline = true;
addChild(codeText);


var resultText:TextField  = new TextField();
resultText.text = "输出结果";
resultText.width = 736.95;
resultText.height = 223.85;
resultText.type = TextFieldType.DYNAMIC;
resultText.border = true;
resultText.x = 25;
resultText.y = 262;
resultText.multiline = true;
addChild(resultText);


stage.addEventListener(KeyboardEvent.KEY_DOWN,onKeyDownHandler);

function onKeyDownHandler(event:KeyboardEvent):void
{
    if (event.keyCode == 13)
    {
        changeCode();
    }
}

//抽离id值
function changeCode():void
{

    var codeStr:String = codeText.text;
    var array:Array = codeStr.split("\r");
    var typeReg:RegExp = new RegExp("<(.*?)\\s","gi");
    var reg:RegExp =/id\/(.*?)\"/ig;
    var resultStr:String = "";//结果1
    var resultStr2:String = "";//结果2
    var flag:int = 1;
    var typeStr:String = "";
    var idStr:String = "";
    for each (var str:String in array)
    {
        //搜索空格符
        var typeTempArray:Array = str.match(typeReg);
        if ( flag==2)
        {
            var defTempArray:Array = str.match(reg);
            typeTempArray = str.match(typeReg);
            if (typeTempArray && typeTempArray[0])
            { 
              typeStr = typeTempArray[0].replace("<",""); 
            }

            if (defTempArray && defTempArray[0])
            {
                idStr = defTempArray[0].replace("id/","").replace("\"","");
                //trace("获取到ID对象"+typeStr);
                resultStr +=  "private #2 #1;".replace("#1",idStr).replace("#2",typeStr) + "\n";
                resultStr2 +=  "#1=(#2)findViewById(R.id.#1) ;".replace(/#1/ig,idStr).replace(/#2/ig,typeStr) + "\n";
                flag = 1;
            }
        }

        if (typeTempArray && typeTempArray[0])
        {
            flag = 2;
            typeStr = typeTempArray[0].replace("<",""); 
        }
    }

    resultText.text = resultStr+"\n"+resultStr2;
}





  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值