Javascript: сколько раз символ встречается в строке - PullRequest
69 голосов
/ 25 мая 2010

Есть ли простой способ проверить, сколько раз символ появляется в строке?

Ответы [ 6 ]

60 голосов
/ 25 мая 2010

Вы можете удалить любой другой символ в строке и проверить длину:

str.replace(/[^a]/g, "").length

Здесь подсчитано, сколько a с str.

31 голосов
/ 25 мая 2010

Это означает 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»

14 голосов
/ 03 декабря 2014

Используйте RegEx для подсчета количества символов "a" в строке.

var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';

document.write(string.match(/a/gi).length);

Позвольте мне объяснить, как это работает:

string.match Это метод RegEx. Он ищет указанный RegEx внутри указанной строки (в данном случае это строка «строка»).

(/a/gi) Это фактический RegEx. Он гласит: «найти персонажа а». Это очень просто Это также несет два флага, "g" и "i". «Г» говорит, что найти ВСЕ вхождения символа «а». В противном случае он найдет только первый и никогда не будет считаться за номером один. Второй флаг "я". Это заставляет RegEx соответствовать всем случаям этого символа. Если бы этого флага (i) не было, приведенный выше код насчитывал бы только 4, потому что он пропустил бы верхний регистр «A» в строке. Из-за «i» он будет соответствовать верхнему и нижнему регистру. Удалите «i», если хотите сопоставить регистр букв.

string.match возвращает массив всех совпадений, поэтому мы используем метод length для получения количества записей в массиве. Все просто!

5 голосов
/ 11 августа 2018

На мой взгляд, в этом случае удобнее и безопаснее избегать регулярных выражений

Это потому, что если мы хотим иметь возможность считать любые символы, нам нужно рассмотреть два выражения. Один для общих символов и второй для специальных символов, например, таких как [, ], ^ и так далее. Об этом легко забыть, но даже если мы запомним это, я думаю, что мы излишне расширяем наш код.

В в этом случае для строки 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)

Наслаждайтесь!

3 голосов
/ 25 мая 2010
var s = "dqsskjhfds";
alert(s.length - s.replace(/a/g, "").length); // number of 'a' in the string
1 голос
/ 26 марта 2018
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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...