Есть ли простой способ проверить, сколько раз символ появляется в строке?
Есть ли простой способ проверить, сколько раз символ появляется в строке?
Ответы:
Вы можете удалить любой другой символ в строке и проверить длину:
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" in 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);