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

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

<!--在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>

(Kriging_NSGA2)克里金模型结合多目标遗传算法求最优因变量及对应的最佳自变量组合研究(Matlab代码实现)内容概要:本文介绍了克里金模型(Kriging)与多目标遗传算法NSGA-II相结合的方法,用于求解最优因变量及其对应的最佳自变量组合,并提供了完整的Matlab代码实现。该方法首先利用克里金模型构建高精度的代理模型,逼近复杂的非线性系统响应,减少计算成本;随后结合NSGA-II算法进行多目标优化,搜索帕累托前沿解集,从而获得多个最优折衷方案。文中详细阐述了代理模型构建、算法集成流程及参数设置,适用于工程设计、参数反演等复杂优化问题。此外,文档还展示了该方法在SCI一区论文中的复现应用,体现了其科学性与实用性。; 适合人群:具备一定Matlab编程基础,熟悉优化算法和数值建模的研究生、科研人员及工程技术人员,尤其适合从事仿真优化、实验设计、代理模型研究的相关领域工作者。; 使用场景及目标:①解决高计算成本的多目标优化问题,通过代理模型降低仿真次数;②在无法解析求导或函数高度非线性的情况下寻找最优变量组合;③复现SCI高水平论文中的优化方法,提升科研可信度与效率;④应用于工程设计、能源系统调度、智能制造等需参数优化的实际场景。; 阅读建议:建议读者结合提供的Matlab代码逐段理解算法实现过程,重点关注克里金模型的构建步骤与NSGA-II的集成方式,建议自行调整测试函数或实际案例验证算法性能,并配合YALMIP等工具包扩展优化求解能力。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值