在过年的时候,在工作为了抽出中文替换就使用正则,方便一下自己的工作。在同事的指导下,遇到一些比较特殊的情况,例如一个as类里面含有相同的中文,而之前所写的会出现重复,所以在显示的时候,也可以加入一些判断。而后续,同事又有一些比较强烈的要求就是把替换好的中文对应的常量 也顺便替换到as类文件当中。这个做法是可以的,过去一些比较牛b的同事做法更加暴力,遇到大量中文文件的时候,把整个项目的含有中文的as类文件全部替换成对应的自定义的常量。过去在做国际版本的时候,会遇到这些情况,虽然还没正式参与到那时候的开发当中,不过在他们的工作中,也了解了不少和学到一些简单的做法。而下面这个则是自己用来帮助自己的一种小工具。纯粹自娱自乐。
import flash.text.TextField; import flash.display.Sprite; import flash.events.MouseEvent; import flash.filters.GlowFilter; import flash.text.TextFieldType; import fl.controls.*; import flash.utils.Dictionary; var regExp:RegExp = /\".*?\"/ig; //匹配双引号内容 var myPattern:RegExp=/[\\u4e00-\\u9fa5]+/; //匹配中文 //输入文本 var inputTxt:TextField=new TextField(); inputTxt.border = true; inputTxt.width = 980; inputTxt.height = 250; inputTxt.type = TextFieldType.INPUT; inputTxt.x = 10; inputTxt.y = 50; inputTxt.multiline = true; inputTxt.wordWrap = true; addChild(inputTxt); var msgTxt:TextField=new TextField(); msgTxt.border = true; msgTxt.width = 300; msgTxt.height = 250; msgTxt.type = TextFieldType.DYNAMIC; msgTxt.x = 10; msgTxt.y=320; msgTxt.multiline = true; msgTxt.wordWrap = true; addChild(msgTxt); var codeTxt:TextField=new TextField(); codeTxt.border = true; codeTxt.width = 670; codeTxt.height = 250; codeTxt.type = TextFieldType.DYNAMIC; codeTxt.x = 320; codeTxt.y=320; codeTxt.multiline = true; codeTxt.wordWrap = true; addChild(codeTxt); var tipTxt:TextField=new TextField(); tipTxt.border = true; tipTxt.width = 100; tipTxt.height = 20; tipTxt.type = TextFieldType.INPUT; tipTxt.x = 50; tipTxt.y=600; tipTxt.text="TIPS"; addChild(tipTxt); //创建按钮 var btn:Button=new Button(); btn.label="创建"; btn.addEventListener(MouseEvent.CLICK,onCover); btn.x = 300; btn.y = 600; btn.buttonMode = true; btn.filters = [new GlowFilter(0xcccccc)]; addChild(btn); var checkBox:CheckBox=new CheckBox(); checkBox.x=160; checkBox.y=600; checkBox.label="是否添加注释"; addChild(checkBox); function onCover(event:MouseEvent):void { if (inputTxt.text) { selectChinese(inputTxt.text); } } //抽出双引号字符 function selectChinese(str:String):void { var tempStr:String=str; var strArray:Array = str.split(";"); var codeStr:String = ""; var n:int = 0; var temp:Array=[]; var myValue:Array=[]; var data:Array=[]; for each (var str:String in strArray) { var result:Object = regExp.exec(str); while (result != null) { var chineseStr:String=result.toString(); if (result && myPattern.test(chineseStr)) { // 检测中文 //trace(result); var index:int=temp.indexOf(chineseStr); if(index==-1) { temp.push(chineseStr); myValue.push("LangModules."+tipTxt.text + n); if(checkBox.selected) { var tipStr:String="/**"+ result.toString()+"*/"+"\n\n"; codeStr+=tipStr; } codeStr += "public static const"+ tipTxt.text + n + ":String=" + result.toString() + ";\n"; data.push({key:chineseStr,value:"LangModules."+tipTxt.text + n}); n++; }else { data.push({key:chineseStr,value:myValue[index]}); } } result = regExp.exec(str); } } msgTxt.text=codeStr; //替换对应的中文 for each(var tips:Object in data) { tempStr=tempStr.replace(tips.key,tips.value); } codeTxt.text=tempStr; }
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。