20

任意の文字を含む文字列をどのようにチェックできるか.... 例: エンジニアリングは文字列で、完全な文字列に'g'が 何回含まれているか

4

12 に答える 12

49

これは古い質問であることは知っていますが、回答されていないオプションがあり、非常に単純なワンライナーです。

int count = string.length() - string.replaceAll("g","").length()
于 2015-01-29T08:29:05.587 に答える
31

これを試して

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

StringUtilsの詳細については、次の質問から学ぶことができます: Java で StringUtils を使用するにはどうすればよいですか?

于 2012-11-06T06:29:48.117 に答える
8

私は aPatternとを使用します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++;
于 2012-11-06T06:28:09.647 に答える
5

正規表現は正常に機能しますが、ここでは実際には必要ありません。for-loop文字のを維持するためにを使用するだけで実行できますcount

文字列を char 配列に変換する必要があります: -

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

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

または、次のように変換せずに実行することもできますcharArray: -

for (int i = 0; i < str.length(); i++) {
    if (str.charAt(i) == toCheck) {
        count++;
    }
}
于 2012-11-06T06:30:45.160 に答える
4
String s = "engineering";
char c = 'g';
s.replaceAll("[^"+ c +"]", "").length();
于 2012-11-06T06:36:14.070 に答える
3

正規表現を使用[g]して文字を見つけ、以下のように結果を数えます。

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

大文字と小文字を区別しないカウントが必要な場合[gG]は、パターンのように正規表現を使用します。

于 2012-11-06T06:27:48.380 に答える
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 = countMatches(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;
}
于 2016-08-28T17:49:11.933 に答える
0

それをループして、必要な文字の数を数えることができます。

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

または、StringUtils を使用してカウントを取得できます。

int count = StringUtils.countMatches("engineering", "e");
于 2014-11-17T09:48:59.657 に答える
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);
于 2012-11-06T06:29:05.887 に答える