首页 > 解决方案 > JS匹配字符串中所有出现的子字符串

问题描述

我看过这个链接,但我的问题是不同的。 javascript 正则表达式匹配所有出现的子字符串?

match()function inJS可用于匹配字符串中的子字符串。

当我运行这段代码时,我得到了这样的输出。

let s = 'Hello_HaHaHaHackerRank';
let hacker = s.match('HaHa');
console.log(hacker);
console.log(hacker.index);
console.log(hacker.input);

输出:

["HaHa"]
6
Hello_HaHaHaHackerRank

hacker.index正在给出模式的第一次出现。但是字符串有3次HaHa。一个在index 6,另一个在index 8,另一个在index 10

谁能解释一下,我怎样才能得到所有子字符串的出现?

标签: javascript

解决方案


indexOf有一个fromIndex值,您可以在 while 循环中使用str.indexOf(searchValue[, fromIndex])

let s = 'Hello_HaHaHaHackerRank';
let find = 'HaHa'
let hacker = [];
let i = 0, j=0;
while (~(i = s.indexOf (find,i + find.length))) hacker.push(i);
console.log (hacker)

如果要包括所有出现,请不要添加单词的长度。

while (~(i = s.indexOf (find,++i))) hacker.push (i)


推荐阅读