কোনও স্ট্রিংয়ে কোনও চরিত্র কতবার উপস্থিত হয় তা যাচাই করার কোনও সহজ উপায় আছে?
কোনও স্ট্রিংয়ে কোনও চরিত্র কতবার উপস্থিত হয় তা যাচাই করার কোনও সহজ উপায় আছে?
উত্তর:
আপনি স্ট্রিংয়ের অন্য কোনও অক্ষর মুছে ফেলতে এবং দৈর্ঘ্যটি পরীক্ষা করতে পারেন:
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" পতাকাটি সত্যই প্রয়োজন হয় না, তবে আপনার "আই" পতাকাটি দরকার
স্ট্রিংয়ের "a" এর সংখ্যা গণনা করতে একটি RegEx ব্যবহার করুন।
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
এটি কীভাবে কাজ করে তা আমাকে ব্যাখ্যা করুন:
string.matchএটি একটি RegEx পদ্ধতি। এটি নির্দিষ্ট স্ট্রিংয়ের অভ্যন্তরে নির্দিষ্ট রেজিএক্স অনুসন্ধান করে (এই ক্ষেত্রে স্ট্রিং "স্ট্রিং")।
(/a/gi)এটিই আসল রেজেক্স। এটিতে লেখা আছে, "চরিত্রটি সন্ধান করুন a।" এটা খুবই সাধারণ. এটিতে "জি" এবং "আই" দুটি পতাকা বহন করে। "জি" অক্ষর "ক" এর সমস্ত উপস্থিতি খুঁজে পেতে বলে। অন্যথায় এটি কেবল প্রথমটি খুঁজে পেতে পারে এবং এটি কখনই প্রথম একের কাছ থেকে গণনা করতে পারে না। দ্বিতীয় পতাকাটি "আমি"। এটি রেজিএক্সকে সেই চরিত্রের সমস্ত ক্ষেত্রে মেলে। যদি পতাকা (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
( @ সরফরাজকে ধন্যবাদ )
বা
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);