javascript - 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
。
谁能解释一下,我怎样才能得到所有子字符串的出现?
解决方案
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)
推荐阅读
- amazon-web-services - VPC 中的 AWS Lambda 调用没有对应终端节点类型的其他 AWS 服务
- excel - Excel 公式计算 - 显示聚合
- c++ - 如何使用函数打印 args 的名称而不使用在 C++ 中定义
- node.js - 将二进制字符串转换为十六进制值
- php - 创建 3 个随机 int 参数,总和为 100
- linq - 使用 LAMBDA 语法的 On 子句中具有多个条件的 LinQ Join
- c++ - C/C++ OpenCV Mat(32F) 通过 UDP 发送
- ubuntu - 一个 nginx 进程在同一个 VM 上具有两个 gunicorn 服务 -> gunicorn 返回“未找到”错误
- mysql - 无法在 mysql 中加载 keyring_file.dll
- cypress - 插件文件中未处理任务“rp_Log”。注册了以下任务:gmail:get-messages