gpt4 book ai didi

javascript - 在 Javascript 中是否有一个函数返回给定字符串出现的次数?

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:52:14 25 4
gpt4 key购买 nike

在 Javascript 中是否有一个函数可以返回给定字符串出现的次数?我需要返回一个数值,该数值等于给定字符串在特定字符串中出现的次数,例如:

var myString = "This is a test text"

如果我必须在上面的字符串中搜索“te”,它将返回 2。

最佳答案

非常接近:您可以使用 String#match这样做:

var count = "This is a test text".match(/te/g).length;

它使用正则表达式 /te/g(按字面意思在全局范围内搜索“te”)并要求字符串返回匹配数组。数组的长度就是计数。

自然会创建一个中间数组,如果您的结果集很大,这可能不是理想的选择。如果你不介意循环:

function countMatches(str, re) {
var counter;

counter = 0;
while (re.test(str)) {
++counter;
}
return counter;
}

var count = countMatches("This is a test text", /te/g);

使用RegExp#test在不创建中间数组的情况下找到匹配项。 (感谢 kennebec 的评论,指出我之前在上面使用 RegExp#exec 不必要地创建了中间数组!)它是否更有效将完全取决于您期望匹配的数量,因为创建一个大的版本array 可能会在 String#match 调用中进行优化,因此以更多(临时)内存使用为代价更快 - 一个大的结果集可能会在尝试分配内存时陷入困境,但一个小的结果集是不太可能。

编辑 请在下方回复您的评论,如果您不是在寻找模式 并且您不介意循环,您可能想要这样做:

function countMatches(str, substr) {
var index, counter, sublength;

sublength = substr.length;
counter = 0;
for (index = str.indexOf(substr);
index >= 0;
index = str.indexOf(substr, index + sublength))
{
++counter;
}
return counter;
}

var count = countMatches("This is a test text", "te");

据我所知,没有预烘焙的非 RegExp 方法可以做到这一点。

关于javascript - 在 Javascript 中是否有一个函数返回给定字符串出现的次数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2508669/

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