Javascript字符串中的多个单词实例

时间:2017-03-19 10:13:13

标签: javascript string indexof

我希望我的代码打印出所有名称实例。

var text = "Eric bla bla bla bla bla Eric bla bla bla Eric";
var myName = "Eric";
var hits = [];

for(var i = 0 ; i<text.length;i++){
    if(text.indexOf(myName) >= 0){
                hits.push(myName);
        }
}

console.log(hits);

这里打印出类似'hits'中的20个“Eric”实例。

如何只打印3个实例(正好3个是字符串'text')。

6 个答案:

答案 0 :(得分:2)

使用<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <audio id='player' src=''></audio> <ul id='control'> <li> <img id='s1xI45JbPVzM' src='http://placehold.it/50x50/000/fff?text=10'> </li> <li> <img id='s1czfdPRs0MC' src='http://placehold.it/50x50/00f/eee?text=11'> </li> <li> <img id='s1NWg457fVWy' src='http://placehold.it/50x50/0e0/111?text=12'> </li> </ul>功能查找搜索名的所有实例:

String.prototype.match()

var text = "Eric bla bla bla bla bla Eric bla bla bla Eric", myName = "Eric", hits = text.match(new RegExp("\\b" + myName +"\\b", "g")); console.log(hits); - 指向单词边界

答案 1 :(得分:1)

你应该在计算前拆分。不是每个角色。

var arr = text.split(" ");
for(var i = 0 ; i<arr.length;i++){
    if(arr[i]==myName){
                hits.push(myName);
        }
}

答案 2 :(得分:1)

保存上次获得的索引,并在后续调用indexOf时使用它来跳过该事件。您也不想为每个字符循环,索引indexOf扫描;这是do-while有用的地方:

var text = "Eric bla bla bla bla bla Eric bla bla bla Eric";
var myName = "Eric";
var hits = [];
var index = -1;
do {
  index = text.indexOf(myName, index + 1);
  if (index >= 0) {
    hits.push(myName);
  }
} while (index >= 0);

console.log(hits);

答案 3 :(得分:1)

您可以使用while循环,并将该位置作为值进行检查。然后使用该位置作为下一个查找的起始值。

var text = "Eric bla bla bla bla bla Eric bla bla bla Eric",
    myName = "Eric",
    hits = [],
    p = text.indexOf(myName);

while (p !== -1) {
    hits.push(myName);
    p = text.indexOf(myName, p + 1);
}

console.log(hits);

答案 4 :(得分:0)

以下代码可以为您提供帮助。

var text = "Eric bla bla bla bla bla Eric bla bla bla Eric";
var myName = "Eric";
var hits = [];

var lastIndex = text.indexOf(myName);
while (lastIndex !== -1) {
    hits.push(myName);
    lastIndex = text.indexOf(myName, lastIndex + myName.length);
}
console.log(hits);

答案 5 :(得分:0)

首先它打印Eric因为包含空格的字符串中存在多个字符所以,打印3元素静态设置限制为3

 for(var i = 0 ; i<3;i++)

或根据你的问题总共有45个字符,所以你可以像这样使用

for(var i = 0 ; i<text.length;i++)