জাভাস্ক্রিপ্ট: একটি অক্ষরে একটি অক্ষর কতবার ঘটে?


93

উত্তর:


82

আপনি স্ট্রিংয়ের অন্য কোনও অক্ষর মুছে ফেলতে এবং দৈর্ঘ্যটি পরীক্ষা করতে পারেন:

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

এখানে এটি গণনা করা হয় যে কত aগুলি আছে str


4
কেবল let xLength = str.replace(/[^a || A]/g, "").length;
এটিই

@ হ্যাপিহ্যান্ডস 31 আপনার অর্থlet xLength = str.replace(/[^aA]/g, "").length;
ডোনাল্ড ডাক

46

এটি 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" পতাকাটি সত্যই প্রয়োজন হয় না, তবে আপনার "আই" পতাকাটি দরকার


4
@ জোশ এটি প্রত্যেকের পছন্দগুলি নির্ভর করে। উদাহরণস্বরূপ আমি এই উত্তরটি পছন্দ করি কারণ এটি পড়া সহজ। তবে এটির প্রযুক্তিগত বা চ্যালেঞ্জিং অন্য কারও জন্য অন্য একটি জবাব পছন্দ করবেন, অন্য একজনের উত্তর আরও পছন্দ করবে কারণ এটি কম সিপিইউ খাচ্ছে এবং এই জাতীয় কারণ .. জাভাস্ক্রিপ্ট এত সুন্দর, স্বাধীনতার স্বাদ।
vdegenne

21

স্ট্রিংয়ের "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অ্যারে এন্ট্রিগুলির সংখ্যা পুনরুদ্ধার করার জন্য আমরা পদ্ধতিটি ব্যবহার করি । যে হিসাবে সহজ!


আমার মনে হয় আপনার জিআই থেকে আই সরিয়ে নেওয়া উচিত, এটি ত্রুটির উত্স। আপনি এটি বোনাস হিসাবে যুক্ত করতে পারেন, তবে আমার ক্ষেত্রে আমি বিশেষত কেস সংবেদনশীল ম্যাচের জন্য খুঁজছিলাম।
গিসমো রানাস

4
এখানে সমস্যাটি হ'ল যদি আপনার " a" না থাকে stringতবে string.match(/a/gi)সমান হয় nullএবং আপনার ত্রুটি হয় Cannot read property 'length' of null
pbialy

4
'জিআই' অংশটি খুব সহায়ক ছিল, স্যার @ ড্রাজাহ
জেসন সেব্রিং

15

আমার মতে এই ক্ষেত্রে নিয়মিত প্রকাশগুলি এড়াতে এটি আরও সুবিধাজনক এবং নিরাপদ

এটি কারণ যদি আমরা কোনও ধরণের চরিত্র গণনা করতে সক্ষম হতে চাই তবে আমাদের দুটি অভিব্যক্তি বিবেচনা করতে হবে। জন্য এক সাধারণ অক্ষর এবং দ্বিতীয় বিশেষ মত উদাহরণস্বরূপ অক্ষর [, ], ^ইত্যাদি। এটি ভুলে যাওয়া সহজ, তবে আমাদের যদি এটি মনে থাকে তবে আমি মনে করি আমরা অযথা আমাদের কোডটি প্রসারিত করছি।

ইন এই ক্ষেত্রে স্ট্রিং এর জন্য 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)

উপভোগ করুন!



1
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);

4
যদিও আপনার কোড স্নিপেটটি সমস্যাটি সমাধান করতে পারে, আপনার কোডটির উদ্দেশ্য কী তা বর্ণনা করা উচিত (এটি কীভাবে সমস্যার সমাধান করে)। তদতিরিক্ত
আহমদ এফ

@ আহমাদএফ আপনি এটি ব্যবহার করতে পারেন> কোনও স্ট্রিংয়ে অক্ষরটি কতবার ঘটে। এবং আপনি যখন এই স্ক্রিপ্টটি চালাবেন তখন আপনি বৈশিষ্ট্য (অক্ষর) সহ একটি বস্তু পাবেন যা এর পরে আরও একবার হয়।
নিতিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.