क्या एक स्ट्रिंग में कितनी बार एक चरित्र प्रकट होता है यह जांचने का एक सरल तरीका है?
क्या एक स्ट्रिंग में कितनी बार एक चरित्र प्रकट होता है यह जांचने का एक सरल तरीका है?
जवाबों:
आप स्ट्रिंग में किसी अन्य वर्ण को निकाल सकते हैं और लंबाई की जांच कर सकते हैं:
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);
इतना है कि यह "ए" और "ए" ... "जी" ध्वज की वास्तव में आवश्यकता नहीं है, लेकिन आपको "i" ध्वज की आवश्यकता है
एक स्ट्रिंग में "a" s की संख्या की गणना करने के लिए एक RegEx का उपयोग करें।
var string = 'aajlkjjskdjfAlsj;gkejflksajfjskda';
document.write(string.match(/a/gi).length);
मुझे समझाएं कि यह कैसे काम करता है:
string.matchयह एक RegEx विधि है। यह निर्दिष्ट स्ट्रिंग के अंदर निर्दिष्ट RegEx (इस मामले में, स्ट्रिंग "स्ट्रिंग") की खोज करता है।
(/a/gi)यह वास्तविक RegEx है। यह पढ़ता है, "चरित्र को ढूंढें।" यह बहुत सरल है। इसमें दो झंडे, "जी" और "आई" भी हैं। "जी" चरित्र "ए" के सभी घटनाओं को खोजने के लिए कहता है। अन्यथा यह केवल पहले वाले को खोजेगा, और यह कभी भी नंबर एक को नहीं गिना जाएगा। दूसरा झंडा "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
( @ सरफराज को धन्यवाद )
या
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);