getIndexesInTextarea(计算字符串在TextArea中的索引)

本文介绍了一种使用JavaScript实现的在文本区域中查找特定字符串的所有出现位置的方法,并返回这些位置的起始和结束索引。通过创建文本范围并利用findText方法,可以有效地在长文本中进行搜索。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

<!--在result中显示str在ta中的索引-->

<html>
 <head>
  <script type="text/javascript">
  <!--
   function displayResult(){
    document.getElementById('result').innerText='';
    if(document.getElementById('str').value=='')return;
    var indexes=getIndexesInTextarea(document.getElementById('ta'),document.getElementById('str').value);
    for(var i=0;i<indexes.length;i++){
     document.getElementById('result').innerText=document.getElementById('result').innerText+'['+indexes[i][0]+","+indexes[i][1]+"]";
    }
   }
   function getIndexesInTextarea(ta,str){
    var indexes=new Array();
    var start=0;
    var end=0;
    var taRange=ta.createTextRange();
    var strRanges=findTextRange(taRange,str);
    
    for(var i=0;i<strRanges.length;i++){
     taRange.moveToElementText(ta); 
     for(start=0;taRange.compareEndPoints("StartToStart",strRanges[i])<0;start++){
      taRange.moveStart('character', 1);
     }
     for(var j=0;j<=start;j++){
      if(ta.value.charAt(j)=='/n'){
       start++;
      }
     }
     taRange.moveToElementText(ta); 
     for(end=0;taRange.compareEndPoints('StartToEnd', strRanges[i])<0;end++){
      taRange.moveStart('character', 1);
     }
     for(var j=0;j<=end;j++){
      if(ta.value.charAt(j)=='/n'){
       end++;
      }
     }
     indexes.push([start,end]);
    }
    return indexes;
   }
   function findTextRange(range,str){
    var ranges=new Array();
      var dup=range.duplicate();
      do{
        var d=dup.duplicate();
        if(d.findText(str)){
         ranges.push(d);
         dup.setEndPoint('StartToEnd',d);
         continue;
        };
        break;
      }while(true)
      return ranges;
    }
  //-->
  </script>
 </head>
 <body scroll="true" style="padding-top:20%;padding-left:20%;">
  <textarea id="ta" rows="20" style="width:60%;display:block;"></textarea>
  <input id="str" type="text"/>
  <input type="button" value="index" onclick="displayResult();"/>
  <div id="result" style="position:absolute;top:150%;left:30%;width:40%;height:10%;border:1px groove orange;"></div>
 </body>
</html>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值