有没有一种简单的方法可以检查字符在字符串中出现多少次?
有没有一种简单的方法可以检查字符在字符串中出现多少次?
Answers:
您可以删除字符串中的任何其他字符并检查长度:
str.replace(/[^a]/g, "").length
这是怎么算的很多a
小号都在str
。
let xLength = str.replace(/[^a || A]/g, "").length;
let xLength = str.replace(/[^aA]/g, "").length;
这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”标志
使用RegEx来计算字符串中“ a”的数量。
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
让我解释一下它是如何工作的:
string.match
这是一个RegEx方法。它在指定的字符串(在本例中为字符串“ string”)中搜索指定的RegEx。
(/a/gi)
这是实际的RegEx。它显示为“找到字符a”。非常简单 它还带有两个标志,即“ g”和“ i”。“ g”表示找到字符“ a”的所有出现。否则,它只会找到第一个,并且永远不会超过第一。第二个标志是“ i”。它使RegEx匹配该字符的所有大小写。如果该标记(i)不存在,则上面的代码将仅计4,因为它将跳过字符串中的大写字母“ A”。因为“i”的,它会上匹配和小写。如果要匹配字母大小写,请删除“ i”。
string.match
返回所有匹配length
项的数组,因此我们使用该方法检索数组条目的数量。就那么简单!
a
” string
,那么string.match(/a/gi)
等于null
并且你会出错Cannot read property 'length' of null
。
这是因为如果我们希望能够计算任何种类的字符,那么我们需要考虑两个表达式。对于一个普通的字符和第二的特殊例如像人物[
,]
,^
等等。忘记它很容易,但是即使我们记得它,我认为我们也不必要扩展我们的代码。
在这种情况下,对于字符串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)
请享用!
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
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);