您的位置:首页 > 其它

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

2015-10-15 12:28 453 查看
第一次接触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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: