是否有一种简单的方法可以检查字符在字符串中出现的次数?
答案 0 :(得分:59)
您可以删除字符串中的任何其他字符并检查长度:
str.replace(/[^a]/g, "").length
此处计算a
中有多少str
。
答案 1 :(得分:31)
在下面的示例中计算a
:
str = "A man is as good as his word";
alert(str.split('a').length-1);
如果你想要不区分大小写,你需要像
这样的东西alert(str.split( new RegExp( "a", "gi" ) ).length-1);
所以它抓住“A”和“a”......“g”标志并不是真的需要,但你需要“i”标志
答案 2 :(得分:14)
使用RegEx计算字符串中" a"的数量。
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);

让我解释一下这是如何运作的:
string.match
这是一个RegEx方法。它在指定的字符串中搜索指定的RegEx(在这种情况下,字符串" string")。
(/a/gi)
这是实际的RegEx。它读取,"找到角色a。"这很简单。它还带有两个标志," g"和"我"。 " g"说找到角色的所有出现" a"。否则它只会找到第一个,它永远不会超过第一个。第二个标志是" i"。它使RegEx匹配该角色的所有情况。如果那个标志(i)不存在,那么上面的代码只会计算4,因为它会跳过大写字母" A"在字符串中。由于" i",它将匹配上部和小写。删除" i"如果你想匹配字母案例。
string.match
返回所有匹配的数组,因此我们使用length
方法检索数组条目的数量。就这么简单!
答案 3 :(得分:5)
这是因为如果我们希望能够计算任何种类的字符,那么我们需要考虑两个表达式。一个用于常见字符,第二个用于特殊字符,例如[
,]
,^
等。忘记它很容易,但是即使我们记得它,我认为我们也不必要扩展我们的代码。
在这种情况下,对于字符串str
和字符ch
来说,适用于以下每种解决方案:
let count = str.split(ch).length - 1
(感谢@Sarfraz)
或
let count = str.split('').filter(x => x == ch).length
或
let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
享受!
答案 4 :(得分:3)
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
答案 5 :(得分:1)
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);