我希望我的代码打印出所有名称实例。
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')。
答案 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++)