2012-11-06 16 views
9

कैसे हम किसी भी स्ट्रिंग कि कैसे समय हो सकता है किसी भी वर्ण है की जाँच कर सकते हैं .... उदाहरण: इंजीनियरिंग एक स्ट्रिंग है कि कितनी बार 'जी ' पूरा स्ट्रिंग मेंजाँच कितनी बार स्ट्रिंग चरित्र पात्र स्ट्रिंग में 'जी'

+0

इसे मैचों की जांच के माध्यम से इसे वर्ण सरणी और लूप में कनवर्ट करें। [Java.util.String] देखें (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html) – MadProgrammer

उत्तर

2

उपयोग regex [g] चार खोजने के लिए और नीचे के रूप में निष्कर्ष गिनती करने के लिए:

Pattern pattern = Pattern.compile("[g]"); 
    Matcher matcher = pattern.matcher("engineering"); 
    int countCharacter = 0; 
    while(matcher.find()) { 
     countCharacter++; 
    } 
    System.out.println(countCharacter); 

आप केस संवेदी गिनती चाहते हैं, regex [gG] के रूप में पैटर्न में उपयोग ।

6

मैं का प्रयोग करेंगे एक Pattern और Matcher:

String string = "engineering"; 
Pattern pattern = Pattern.compile("([gG])"); //case insensitive, use [g] for only lower 
Matcher matcher = pattern.matcher(string); 
int count = 0; 
while (matcher.find()) count++; 
0

आप निम्न की कोशिश कर सकते हैं:

String str = "engineering"; 
int letterCount = 0; 
int index = -1; 
while((index = str.indexOf('g', index+1)) > 0) 
    letterCount++; 
System.out.println("Letter Count = " + letterCount); 
22

इस

int count = StringUtils.countMatches("engineering", "e"); 

StringUtils के बारे में अधिक सवाल से सीखा जा सकता है का प्रयास करें: How do I use StringUtils in Java?

+0

आपको उस 'स्ट्रिंगउट्स' कहां से मिलता है? –

+2

कृपया इस commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html – sunleo

4

हालांकि रेगेक्स ठीक काम करेगा, लेकिन वास्तव में इसकी आवश्यकता नहीं है। आप किसी चरित्र के लिए count बनाए रखने के लिए बस for-loop का उपयोग कर ऐसा कर सकते हैं।

आप एक चार सरणी के लिए अपने स्ट्रिंग परिवर्तित करने की आवश्यकता होगी: -:

for (int i = 0; i < str.length(); i++) { 
    if (str.charAt(i) == toCheck) { 
     count++; 
    } 
} 
+0

जांचें कि कृपया मेल नहीं खाएं। – sunleo

+0

@sunleo .. किस कोड के लिए? खैर, वे दोनों ठीक काम कर रहे हैं। बस इसे चेक किया। –

+0

@sunleo .. कृपया उन्हें आज़माएं। वे दोनों मेरे मामले में गिनती के रूप में '3' दे रहे हैं। –

3
String s = "engineering"; 
char c = 'g'; 
s.replaceAll("[^"+ c +"]", "").length(); 
+0

एक नोट के रूप में, यदि 'char c' उपयोगकर्ता इनपुट से आता है, तो यह दृष्टिकोण regex इंजेक्शन के लिए कमजोर है। (एसक्यूएल इंजेक्शन के समान) – Tuupertunut

0

आप - आप भी यह charArray में रूपांतरित किए बिना कर सकते हैं

String str = "engineering"; 
    char toCheck = 'g'; 
    int count = 0; 

    for (char ch: str.toCharArray()) { 
     if (ch == toCheck) { 
      count++; 
     } 
    } 
    System.out.println(count); 

या, इसके माध्यम से लूप कर सकते हैं और आप चाहते हैं कि पत्र की गिनती रखो।

public class Program { 
    public static int countAChars(String s) { 
     int count = 0; 
     for(char c : s.toCharArray()) { 
      if('a' == c) { 
       count++; 
      } 
     } 
     return count; 
    } 
} 

या आप गिनने के लिए स्ट्रिंगयूटिल का उपयोग कर सकते हैं।

int count = StringUtils.countMatches("engineering", "e"); 
22

मैं जानता हूँ कि यह वह जगह है और पुराने सवाल है, लेकिन वहाँ एक विकल्प है कि उत्तर नहीं दिया गया है और यह बहुत सरल एक लाइनर है:

int count = string.length() - string.replaceAll("g","").length() 
+1

मुझे लगता है कि आपको substIndex और endIndex को सबस्ट्रिंग में जोड़ना चाहिए –

1

यह एक बहुत ही बहुत पुराना सवाल है, लेकिन यह हो सकता है किसी को ("_")

आप बस बस इस कोड

public static void main(String[] args){ 
    String mainString = "This is and that is he is and she is"; 
    //To find The "is" from the mainString 
    String whatToFind = "is"; 
    int result = getCountOf(mainString, whatToFind); 
    System.out.println(result); 
} 

public static int countMatches(String mainString, String whatToFind){ 
    String tempString = mainString.replaceAll(whatToFind, ""); 
    //this even work for on letter 
    int times = (mainString.length()-tempString.length())/whatToFind.length(); 

    //times should be 4 
    return times; 
} 
0

उपयोग org.apache.c उपयोग कर सकते हैं मदद Oringons.lang3 पैकेज स्ट्रिंगउट्स क्लास के उपयोग के लिए। जार फ़ाइल डाउनलोड करें और इसे अपने वेब एप्लिकेशन के lib फ़ोल्डर में रखें।

int count = StringUtils.countMatches("engineering", "e"); 
संबंधित मुद्दे