我需要计算一个字符在字符串中出现的次数。
例如,假设我的字符串包含:
var mainStr = "str1,str2,str3,str4";
我想找到逗号,
字符的计数,即 3。以及沿逗号拆分后的单个字符串的计数,即 4。
我还需要验证每个字符串,即 str1 或 str2 或 str3 或 str4 不应超过 15 个字符。
我需要计算一个字符在字符串中出现的次数。
例如,假设我的字符串包含:
var mainStr = "str1,str2,str3,str4";
我想找到逗号,
字符的计数,即 3。以及沿逗号拆分后的单个字符串的计数,即 4。
我还需要验证每个字符串,即 str1 或 str2 或 str3 或 str4 不应超过 15 个字符。
我已经更新了这个答案。我喜欢更好地使用匹配的想法,但它更慢:
console.log(("str1,str2,str3,str4".match(/,/g) || []).length); //logs 3
console.log(("str1,str2,str3,str4".match(new RegExp("str", "g")) || []).length); //logs 4
如果您事先知道要搜索的内容,请使用正则表达式文字,否则可以使用RegExp
构造函数,并将g
标志作为参数传递。
match
返回null
没有结果,因此|| []
我在 2009 年的原始答案如下。它不必要地创建了一个数组,但使用拆分更快(截至 2014 年 9 月)。我很矛盾,如果我真的需要速度,毫无疑问我会使用拆分,但我更喜欢使用匹配。
旧答案(来自 2009 年):
如果您正在寻找逗号:
(mainStr.split(",").length - 1) //3
如果您正在寻找 str
(mainStr.split("str").length - 1) //4
在@Lo 的回答和我自己的愚蠢性能测试中,至少在 Chrome 中,速度都领先,但再次创建额外的数组似乎并不明智。
至少有五种方式。最好的选项,也应该是最快的(由于本地 RegEx 引擎)被放置在顶部。
("this is foo bar".match(/o/g)||[]).length;
// returns 2
"this is foo bar".split("o").length - 1;
// returns 2
不推荐拆分,因为它资源匮乏。它为每个匹配分配新的 'Array' 实例。不要通过 FileReader 尝试使用 >100MB 的文件。您可以使用Chrome 的分析器选项观察确切的资源使用情况。
var stringsearch = "o"
,str = "this is foo bar";
for(var count=-1,index=-2; index != -1; count++,index=str.indexOf(stringsearch,index+1) );
// returns 2
搜索单个字符
var stringsearch = "o"
,str = "this is foo bar";
for(var i=count=0; i<str.length; count+=+(stringsearch===str[i++]));
// returns 2
元素映射和过滤。不推荐这样做,因为它的整体资源预分配而不是使用 Pythonian 'generators':
var str = "this is foo bar"
str.split('').map( function(e,i){ if(e === 'o') return i;} )
.filter(Boolean)
//>[9, 10]
[9, 10].length
// returns 2
分享: 我制作了这个要点,目前有 8 种字符计数方法,所以我们可以直接汇集和分享我们的想法 - 只是为了好玩,也许还有一些有趣的基准:)
将此函数添加到 sting 原型:
String.prototype.count=function(c) {
var result = 0, i = 0;
for(i;i<this.length;i++)if(this[i]==c)result++;
return result;
};
用法:
console.log("strings".count("s")); //2
简单地说,使用拆分来找出字符串中某个字符出现的次数。
mainStr.split(',').length
// 给出 4,这是使用分隔符逗号分割后的字符串数
mainStr.split(',').length - 1
// 给出 3,这是逗号的计数
一个快速的谷歌搜索得到了这个(来自http://www.codecodex.com/wiki/index.php?title=Count_the_number_of_occurrences_of_a_specific_character_in_a_string#JavaScript)
String.prototype.count=function(s1) {
return (this.length - this.replace(new RegExp(s1,"g"), '').length) / s1.length;
}
像这样使用它:
test = 'one,two,three,four'
commas = test.count(',') // returns 3