从段落中搜索文本 - Javascript

Searching a text from a paragraph - Javascript?

本文关键字:Javascript 文本 搜索 段落中      更新时间:2023-09-26

我编写了以下代码来从段落中搜索我的名字,

 /*jshint multistr:true */
text = "Blah blah blah blah blah blah Elic '
blah blah blah Eric blah blah Eric blah blah '
blah blah blah blah blah Eric";
var myName = "Eric";
var hits = [];
var l=0;
var count=0;

// Look for "E" in the text
for(var i = 0; i < text.length; i++) {
    if (text[i] === "E") {
        for(var j = i; j < (myName.length + i); j++) {
           for(var k =1; k < 4; k++) {
            if(text[i+k] === myName[k]){
            hits.push(text[j]); 
            }
                else {
                    break;
                }
                }           
            }
        }
    }

if (hits.length === 0) {
    console.log("Your name wasn't found!");
} else {
    console.log(hits);
}

但是输出就像 [ 'E', 'E', 'E', 'r', 'r', 'r', 'i', 'i', 'i', 'c', 'c', 'c', 'E', 'E', 'E', 'r', 'r', 'r', 'i', 'i', 'i', 'c', 'c', 'c', 'E', 'E', 'E', 'r', 'r', 'r', 'i', 'i', 'i', 'c', 'c', 'c' ]

我确定这是因为第三个 for 循环,请给出一些建议来微调此代码,以便输出如下所示,

[ 'E', 'r', 'i', 'c', 'E', 'r', 'i', 'c', 'E', 'r', 'i', 'c', 'E', 'r', 'i', 'c' ]

提前谢谢。

1

var res = text.match(new RegExp(myName, 'g')).join('').split('');

阿拉伯数字

var text = "Blah blah blah blah blah blah Elic '
blah blah blah Eric blah blah Eric blah blah '
blah blah blah blah blah Eric";
var myName = "Eric";
var hits   = [];
var l      = 0;
var count  = 0;
var foundName = '';  
for (var i = 0; i < text.length; i++) {
  foundName = '';
  if (text[i] === "E") {
    for (var j = 0; j < myName.length; j++) {
      foundName += text[i + j];                
    }
    if (foundName === myName) {
      for (var k = 0; k < myName.length; k++) {
        hits.push(foundName[k]);                
      }
    }
  }
}
console.log(hits);

你不需要这两个内部for循环。当你break时发生了什么,你正在突破最里面的for循环,但仍然在运行第二个for循环。

尝试这个而不是两个内部的 for 循环:(替换涉及 j 的 for 循环)

for (var k = 0; k < 4; k++) {
    if (text[i + k] === myName[k]) {
        hits.push(text[i + k]); 
    } else {
        break;
    }
}      

不确定您要对结果做什么,但假设您只想测试名称是否在字符串中,则使用 .indexOf() 方法,因此:

var n = text.indexOf("Eric");

然后n的结果将显示第一个字符的索引位置,如果找不到匹配的单词,那么它将返回-1

因此,然后将其添加到一个简单的测试中,例如:

if(text.indexOf("Eric") <0){
     ''doStuff
}
你可以

尝试使用 javascript .indexOf() 函数。

text = "Blah blah blah blah blah blah Elic '
blah blah blah Eric blah blah Eric blah blah '
blah blah blah blah blah Eric";
if(text.indexOf('Eric') < 0 ){
    console.log("Your name wasn't found!");
}

请尝试这个..

     text = "Blah blah blah blah blah blah Elic lah blah blah Eric blah blah Eric blah blah blah blah blah blah blah Eric";
    var charFound=0;
    var myName = ['E' , 'r', 'i' ,'c'];
    var hits = [];
    var l=0;
    for(var i = 0; i < text.length; i++) 
    {
        if(text[i] === myName[charFound])
        {   
          charFound++;
        }
        else
        {
          continue;
          charFound=0;
        }
        if(charFound == 4)
        {
          for(var j = 0; j < 4;  j++)
          {
             hits.push(text[i-j]); 
            }
            charFound = 0;
        }
   }
   // Rearranging the hits counter to match the requirement
   for(var k = 0; k <hits.length/2; k++ )
   {
        var temp="";
        temp = hits[k];
        hits[k]= hits[hits.length-k-1];
        hits[hits.length-k-1] = temp;
   }
  alert(hits);