2012-11-06 6 views
9

Wie wir jede Zeichenfolge überprüfen können, die ein beliebiges Zeichen enthält, wie die Zeit kann .... Beispiel: Engineering ist eine Zeichenfolge enthält, wie oft ‚g ' in kompletten StringCheck wie oft Zeichenfolge enthält Zeichen ‚g‘ in qualifizierten String

+0

Konvertieren Sie es in ein Zeichenarray und durchlaufen Sie es, indem Sie nach Übereinstimmungen suchen. Check out [java.util.String] (http://docs.oracle.com/javase/7/docs/api/java/lang/String.html) – MadProgrammer

Antwort

2

verwenden regex [g] die Zeichen zu finden und die Ergebnisse zählen, wie unten:

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

Wenn Sie Groß- und Kleinschreibung Zählung möchten, verwenden Sie regex als [gG] im Pattern .

6

Ich würde verwenden eine Pattern und 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

Sie können versuchen, folgende:

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

Versuchen Sie, diese

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

Mehr über StringUtils kann von der Frage gelernt werden: How do I use StringUtils in Java?

+0

Woher bekommst du das 'StringUtils'? –

+2

Bitte überprüfen Sie diese commons.apache.org/lang/api-2.5/org/apache/commons/lang/StringUtils.html – sunleo

4

Obwohl Regex wird gut funktionieren, aber es ist nicht wirklich erforderlich hier. Sie können es einfach mit einem for-loop zu einem count für ein Zeichen pflegen.

Sie müssten Ihre Zeichenfolge in ein char-Array konvertieren: -

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

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

oder, können Sie es auch tun ohne-charArray Umwandlung: -

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

Bitte überprüfen Sie, dass es keine Übereinstimmung gibt. – sunleo

+0

@sunleo .. Für welchen Code? Nun, beide funktionieren gut. Ich habe es einfach überprüft. –

+0

@sunleo .. Bitte versuchen Sie es. Beide geben in meinem Fall "3" als Zahl an. –

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

Als Anmerkung, wenn 'char c' von Benutzereingaben stammt, ist dieser Ansatz anfällig für Regex-Injektion. (ähnlich wie bei SQL-Injection) – Tuupertunut

0

Sie kann es durchlaufen und den gewünschten Buchstaben zählen.

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

oder Sie können StringUtils verwenden, um eine Anzahl zu erhalten.

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

Ich weiß, das ist und alte Frage, aber es ist eine Option, die nicht beantwortet wurde, und es ist ziemlich einfach Einzeiler:

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

Ich denke, Sie sollten beginIndex und endIndex zum Teilstring hinzufügen –

1

dies ist eine sehr, sehr alte Frage, aber das könnte jemand helfen ("_")

Sie einfach nur diesen Code

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

Verwendung org.apache.c verwenden können ommons.lang3 Paket zur Verwendung StringUtils Klasse. laden Sie die JAR-Datei herunter und legen Sie sie in den lib-Ordner Ihrer Webanwendung.

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