检查字符串在符合条件的字符串中包含字符'g'的次数

时间:2012-11-06 06:20:51

标签: java

我们如何检查包含任何字符的任何字符串怎么可能时间.... 例: 工程是一个字符串,包含完整字符串中'g'的次数

12 个答案:

答案 0 :(得分:35)

我知道这是一个古老的问题,但是有一个选项没有得到解答,而且这个选项非常简单:

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

答案 1 :(得分:24)

试试这个

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

有关StringUtils的更多信息,请参阅以下问题:How do I use StringUtils in Java?

答案 2 :(得分:8)

我会使用PatternMatcher

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++;

答案 3 :(得分:4)

虽然Regex可以正常工作,但这里并不是真的需要。您只需使用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++;
    }
}

答案 4 :(得分:4)

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

答案 5 :(得分:2)

使用正则表达式[g]查找字符并计算结果如下:

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

如果您想要不区分大小写的计数,请在模式中将正则表达式用作[gG]

答案 6 :(得分:1)

这是一个非常古老的问题,但这可能有助于某人(&#34; _&#34;)

你可以简单地使用这段代码

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;
}

答案 7 :(得分:1)

使用org.apache.commons.lang3包使用StringUtils类。 下载jar文件并将其放入Web应用程序的lib文件夹中。

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

答案 8 :(得分: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);

答案 9 :(得分: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");

答案 10 :(得分:0)

您可以尝试Java-8方式。简单,简单且可读性强。

long countOfA = str.chars().filter(ch -> ch == 'g').count();

答案 11 :(得分:0)

这是一个古老的问题,它在Java中,但我将在Python中回答。这可能会有所帮助:

string = 'E75;Z;00001;'

a = string.split(';')

print(len(a)-1)