获取确切子串的数量

0 java string substring

我想从字符串中获取子串的数量.

输入是excel公式,如IF(....IF(...))+IF(...)+SUM(..)字符串.我想要计算所有IF(子串.重要的是SUMIF(...),COUNTIF(...)不会被计算在内.

我想要检查之前没有大写字母"IF",但是这肯定会给出(肯定)索引.有人可以给我一个建议吗?

我的代码:

for(int i = input.indexOf("IF(",input.length()); 
        i != -1; 
        i= input.indexOf("IF(,i- 1)){

    if(!isCapitalLetter(tmpFormulaString, i-1)){
        ifStatementCounter++;
    }
}
Run Code Online (Sandbox Code Playgroud)

Adr*_*hum 8

虽然你可以像你一样自己进行解析(这可能对你学习调试更好,所以你知道你的问题是什么)

但是,它可以通过正则表达式轻松完成:

String s = "FOO()FOOL()SOMEFOO()FOO";

Pattern p = Pattern.compile("\\bFOO\\b");
Matcher m = p.matcher(s);

int count = 0;
while (m.find()) {
    count++;
}

// count= 2
Run Code Online (Sandbox Code Playgroud)

这里的主要技巧是\b在正则表达式中. \b意为词边界.简而言之,如果位置处有字母数字字符,\b则不匹配.

http://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html