1

图片描述

当然,这个查找替换功能可以选择不选中正则表达式。

两个关键函数(写了三小时才测试成功),要来得瑟一下!勾选中了“正则?”之后,可以实现跨行搜索内容。


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,len=str.length,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草案。


樊潇洁
415 声望23 粉丝

笨鸟先飞


引用和评论

0 条评论