当然,这个查找替换功能可以选择不选中正则表达式。
两个关键函数(写了三小时才测试成功),要来得瑟一下!勾选中了“正则?”之后,可以实现跨行搜索内容。
function find(isdesc){ var startPos=Editor.selectionStart,endPos=Editor.selectionEnd; var isreg=document.se.isreg.checked; var str=document.se.find.value; if(str=='')return false; var tmpStr=Editor.value,len=str.length,ss=-1; if(tmpStr=='')return false; //console.log(startPos+','+endPos+','+tmpStr.length); if(!isdesc){ if(startPos==tmpStr.length)startPos=Editor.selectionStart=endPos=Editor.selectionEnd=0; if(isreg){ var reg=new RegExp(str,"im"); tmpStr=tmpStr.substr(endPos); var arr=tmpStr.match(reg); if(arr){str=arr[0];len=str.length;ss=tmpStr.indexOf(str)+endPos;} } else{ ss=tmpStr.indexOf(str,endPos); } if(ss>-1){Editor.selectionStart=ss;Editor.selectionEnd=ss+len;}else {alert('已搜到底部');Editor.selectionStart=Editor.selectionEnd=0;} } else{ if(endPos==0)startPos=Editor.selectionStart=endPos=Editor.selectionEnd=tmpStr.length; if(isreg){ var reg=new RegExp(str,"img"); tmpStr=tmpStr.substring(0,startPos); var arr=tmpStr.match(reg); if(arr){ str=arr[arr.length-1]; len=str.length; ss=tmpStr.lastIndexOf(str); } } else{ ss=tmpStr.lastIndexOf(str,startPos-len); } if(ss>-1){Editor.selectionStart=ss;Editor.selectionEnd=ss+len;}else{alert('已搜到顶部');Editor.selectionStart=Editor.selectionEnd=tmpStr.length;} } }
function replace(isall){ var str=document.se.find.value,str2=document.se.for.value; var isreg=document.se.isreg.checked; if(str=='')return false; var tmpStr=Editor.value,ss=-1; if(tmpStr=='')return false; if(isall){ var pattern=str; if(!isreg)pattern=str.replace(/([\/\|\.\\\(\)\*\?\^\$])/g,'\\$1'); Editor.value=tmpStr.replace(new RegExp(pattern,"igm"),str2); // i:不区分大小写,g:全局搜索,m:多行搜索 Editor.selectionStart=Editor.selectionEnd=0; } else{ var startPos=Editor.selectionStart,endPos=Editor.selectionEnd; if(isreg){ var reg=new RegExp(str,"im"); tmpStr=tmpStr.substr(startPos); var arr=tmpStr.match(reg); if(arr){str=arr[0];len=str.length;ss=tmpStr.indexOf(str)+startPos;str2=str.replace(reg,str2);} } else ss=tmpStr.indexOf(str,startPos); if(ss>-1){ tmpStr=Editor.value; Editor.value=tmpStr.substring(0,ss)+str2+tmpStr.substr(ss+str.length); Editor.selectionStart=ss;Editor.selectionEnd=ss+str2.length;}else {alert('已搜到底部');Editor.selectionStart=Editor.selectionEnd=0; } } }
现在我正在翻译SVG2.0的w3c草案。