我需要计算字符串中某个字符出现的次数。
例如,假设我的字符串包含:
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个字符。
当前回答
我对接受的答案做了轻微的改进,它允许检查区分大小写/不区分大小写的匹配,并且是附加到字符串对象的方法:
String.prototype.count = function(lit, cis) {
var m = this.toString().match(new RegExp(lit, ((cis) ? "gi" : "g")));
return (m != null) ? m.length : 0;
}
Lit是要搜索的字符串(例如'ex'), cis是不区分大小写的,默认为false,它将允许选择不区分大小写的匹配。 要搜索字符串'I love StackOverflow.com'中的小写字母'o',你可以使用:
var amount_of_os = 'I love StackOverflow.com'.count('o');
Amount_of_os等于2。 如果我们再次使用不区分大小写的匹配来搜索相同的字符串,您将使用:
var amount_of_os = 'I love StackOverflow.com'.count('o', true);
这一次,amount_of_os将等于3,因为字符串中的大写O包含在搜索中。
其他回答
var a = "acvbasbb";
var b= {};
for (let i=0;i<a.length;i++){
if((a.match(new RegExp(a[i], "g"))).length > 1){
b[a[i]]=(a.match(new RegExp(a[i], "g"))).length;
}
}
console.log(b);
在javascript中,你可以使用上面的代码来获得字符串中出现的字符。
我使用的是Node.js v.6.0.0,最快的是带索引的(Lo Sauer回答中的第三个方法)。
二是:
函数count(s, c) { Var n = 0; 对于(令x (s)) { 如果(x == c) n + +; } 返回n; }
最简单的办法是…
的例子,
str = 'mississippi';
function find_occurences(str, char_to_count){
return str.split(char_to_count).length - 1;
}
find_occurences(str, 'i') //outputs 4
好吧,另一个用regexp的——可能不快,但比其他的更短,可读性更好,在我的例子中只是用“_”来计数
key.replace(/[^_]/g,'').length
只要删除所有不像你的char的东西 但是用字符串作为输入看起来不太好
下面是一个类似的解决方案,但它使用了Array.prototype.reduce
function countCharacters(char, string) {
return string.split('').reduce((acc, ch) => ch === char ? acc + 1: acc, 0)
}
如前所述,String.prototype.split的工作速度比String.prototype.replace快得多。