gpt4 book ai didi

javascript - 计算字符串中特定单词的出现次数

转载 作者:行者123 更新时间:2023-11-30 08:21:22 26 4
gpt4 key购买 nike

我有一个字符串如下

我想计算 v|adv| 出现的总次数。我正在使用下面的代码行

var result = "coord|and adv|then pro|it mod|may v|hurt det|the n|dog";
console.log(
(result.split("v|").length - 1) + (result.split("adv|").length - 1)
);

现在技术上它应该是 2 即 1 为 adv|和 1 代表 v|但它实际上是在计算 v|在广告中|也因此结果是 3。有人可以指点我应该怎么做才能将两者算作单独的词吗?

最佳答案

对于v部分,可以有一组不是ad的两个字母,保证不匹配adv|:

var result = "coord|and adv|then pro|it mod|may v|hurt det|the n|dog";
console.log(
(result.split(/(?:(?!ad)..|^.?)v\|/).length-1) +
(result.split("adv|").length-1)
);

https://regex101.com/r/f80iGd/1

/(?:(?!ad)..|^.?)v\|/ 表示:

(?:(?!ad)..|^.?) - 一个组包含:

(?!ad).. - 两个不是 ad 的字母,或者

^.? - 字符串的开头,或者字符串的开头后跟一个字母

以上所有内容后跟 v\|v 后跟文字 |

此外,与其使用 split 构造一个拆分数组然后检查数组的长度减一,使用 match 来匹配出现可能更直观v|adv|,并检查匹配的数量:

var result = "coord|and adv|then pro|it mod|may v|hurt det|the n|dog";
console.log(
result.match(/(?:(?!ad)..|^.?)v\|/g).length +
result.match(/adv\|/g).length
);

请注意,在较新的 Javascript 环境中,您还可以使用负向后视来检查 v 之前是否没有 ad:

var result = "coord|and adv|then pro|it mod|may v|hurt det|the n|dog";
console.log(
result.match(/(?<!ad)v\|/g).length +
result.match(/adv\|/g).length
);

(以上片段可能不适用于所有浏览器)

您还可以通过使用一组可选的 ad 将两个 .match 条件合并为一个:

var result = "coord|and adv|then pro|it mod|may v|hurt det|the n|dog";
console.log(
result.match(/(?:ad)?v\|/g).length
);

关于javascript - 计算字符串中特定单词的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53028858/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com