Чи є простий спосіб перевірити, скільки разів символ з’являється у рядку?
Чи є простий спосіб перевірити, скільки разів символ з’являється у рядку?
Відповіді:
Ви можете видалити будь-який інший символ із рядка та перевірити довжину:
str.replace(/[^a]/g, "").length
Тут підраховується, скільки as 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);
Так що він захоплює прапор "А" та "а" ... "g" насправді не потрібен, але вам потрібен прапор "i"
Використовуйте RegEx для підрахунку кількості "a" в рядку.
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
Дозвольте пояснити, як це працює:
string.matchЦе метод RegEx. Він шукає вказаний RegEx всередині зазначеного рядка (у цьому випадку рядок "рядок").
(/a/gi)Це фактичний RegEx. Він читає: "знайдіть персонажа а". Це дуже просто. Він також містить два прапори, "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);