|
注意:有个BUG ,对引号内的注释会误判。。。
建一个 输入文本框命名为 textPlate 一个button 命名为 btOmitComment
帧代码:
var status=0;
btOmitComment.onRelease = btHandle;
function btHandle()
{
if (status == 0) {
omitComment();
//去注释
status = 1;
} else {
revert();
//还原,好像没什么必要,没做这个
status = 0;
}
}
//去注释
function omitComment()
{
var searchStatus = 0; //注释状态标记 1 表示已找到一个"//" 2表示找到"/*" 0表示非注释状态
var searchStatus2=0 //注释字符查找标记 1 表示第一个"/" 2表示第一个"*" 0表示没有发现
btOmitComment.enabled=false;
var ret:String = "";
var t = textPlate.text;
var len = t.length;
for (var i = 0; i<len; i++) {
//开始拆分输入的字符
splice = t.substr(i, 1);
if(searchStatus==1){
if(splice!="\r")continue;
else searchStatus=0;
}
if (splice == "/") {
trace("found /")
switch (searchStatus2) {
case 0 ://如果前一个字符不为 / 也不为 *
trace("find only one /");
searchStatus2 = 1;
continue;
//break;
case 1 ://如果前一个字符为 / 进入行注释状态
trace("find // begin to comment status");
searchStatus = 1; //行注释状态
searchStatus2 = 0;
continue;
break;
case 2://如果前一个字符为 *
if(searchStatus==2){
//如果已有一个/*开头 进入代码状态
trace("find */");
searchStatus2=0;
searchStatus = 0;
continue;
}break;
default :
break;
}
}
if(splice=="*")
{
trace("found *");
switch(searchStatus2)
{
case 0:if(searchStatus==2){searchStatus2=2;continue;}break;
case 1://如果前一个字符为 / 进入注释状态
if(searchStatus==0){searchStatus2=0;searchStatus=2;continue}break;
//case 2:if(searchStatus>0)continue;break;
default:break;
}
}
if(searchStatus==0){
if(searchStatus2==0){ret+=splice;}
if(searchStatus2==1){ret+="/";ret+=splice;searchStatus2=0;}
if(searchStatus2==2){ret+="*";ret+=splice;searchStatus2=0;}
}
}//结束拆分
if(searchStatus2==1)ret+="/";
textPlate.text=ret;
btOmitComment.enabled=true;
}
[ 本帖最后由 iptton 于 2006-10-19 18:05 编辑 ] |
|