Javascript:字符串中出现字符的次数

Rut*_*uth 74 javascript string

有一种简单的方法可以检查字符在字符串中出现的次数吗?

Gum*_*mbo 66

您可以删除字符串中的任何其他字符并检查长度:

str.replace(/[^a]/g, "").length
Run Code Online (Sandbox Code Playgroud)

这是怎么算的很多a小号都在str.

  • 只是想指出,您也可以通过执行 `let xLength = str.replace(/[^a || A]/g, "").length;` 来解释大写字母 (2认同)
  • @HappyHands31我们不能只将不区分大小写的标志(i)添加到正则表达式中并将其设为“str.replace(/[^a]/gi,“”).length”吗? (2认同)

Sar*_*raz 35

a 包括以下示例:

str = "A man is as good as his word";
alert(str.split('a').length-1);
Run Code Online (Sandbox Code Playgroud)

如果你想要不区分大小写,你会想要类似的东西

alert(str.split( new RegExp( "a", "gi" ) ).length-1);
Run Code Online (Sandbox Code Playgroud)

所以它抓住"A"和"a"......"g"标志并不是真的需要,但你需要"i"标志

  • 最有效的答案,伤心的其他人得到了这么多的选票. (6认同)

Dra*_*zah 15

使用RegEx计算字符串中"a"的数量.

var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';

document.write(string.match(/a/gi).length);
Run Code Online (Sandbox Code Playgroud)

让我解释一下这是如何工作的:

string.match这是一个RegEx方法.它在指定的字符串中搜索指定的RegEx(在本例中为字符串"string").

(/a/gi)这是实际的RegEx.它写道,"找到一个角色." 这很简单.它还带有两个标志,"g"和"i"."g"表示找到字符"a"的所有出现.否则它只会找到第一个,它永远不会超过第一个.第二个标志是"i".它使RegEx匹配该角色的所有情况.如果那个标志(i)不在那里,上面的代码只会计数4,因为它会跳过字符串中的大写"A".由于的"I",它将匹配上下壳体.如果要匹配字母大小写,请删除"i".

string.match返回所有匹配的数组,因此我们使用该length方法来检索数组条目的数量.就那么简单!

  • 这里的问题是,如果你在 `string` 中没有 "`a`",那么 `string.match(/a/gi)` 等于 `null` 并且你得到错误 `Cannot read property 'length' of null `. (2认同)

sim*_*eco 6

我认为在这种情况下避免使用正则表达式更为方便和安全

这是因为如果我们希望能够计算任何种类的字符,那么我们需要考虑两个表达式。对于一个普通的字符和第二的特殊例如像人物[]^等等。忘记它很容易,但是即使我们记得它,我认为我们也不必要扩展我们的代码。

这种情况下,对于字符串str和字符,ch可以使用以下每个解决方案:

let count = str.split(ch).length - 1
Run Code Online (Sandbox Code Playgroud)

(感谢@Sarfraz

要么

let count = str.split('').filter(x => x == ch).length
Run Code Online (Sandbox Code Playgroud)

要么

let count = 0
str.split('').forEach(x => x == ch ? count++ : null)
Run Code Online (Sandbox Code Playgroud)

请享用!