Есть ли простой способ проверить, сколько раз символ появляется в строке?
javascript
string
Рут
источник
источник
Ответы:
Вы можете удалить любой другой символ в строке и проверить длину:
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. Он ищет указанное регулярное выражение внутри указанной строки (в данном случае - строки "строка").(/a/gi)
Это настоящий RegEx. Он гласит: «Найди персонажа а». Все очень просто. На нем также есть два флага: «g» и «i». "G" говорит, что нужно найти ВСЕ вхождения символа "a". В противном случае он найдет только первую и никогда не будет считать после номера один. Второй флаг - «i». Это заставляет RegEx соответствовать всем регистрам этого символа. Если бы этого флага (i) не было, код выше засчитал бы только 4, потому что он пропустил бы прописную букву «A» в строке. Из-за «i» он будет соответствовать верхнему и нижнему регистру. Удалите «i», если хотите, чтобы регистр букв соответствовал регистру.string.match
возвращает массив всех совпадений, поэтому мы используемlength
метод для получения количества записей массива. Просто как тот!источник
a
" instring
, то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);
источник