获取确切子串的数量

时间:2014-05-19 08:54:42

标签: 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++;
    }
}

2 个答案:

答案 0 :(得分: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

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

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

答案 1 :(得分:0)

我认为您可以通过查找字符串IF(来解决您的问题。

尝试以另一种方式做同样的事情。

For example: 
inputStrin = IF(hello)IF(hello)....IF(helloIF(hello)).... 

inputString.getIndexOf("IF(");

那解决了你的问题?

Click Here或者您也可以使用regular expression