我想从字符串中获取子串的数量.
输入是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)
虽然你可以像你一样自己进行解析(这可能对你学习调试更好,所以你知道你的问题是什么)
但是,它可以通过正则表达式轻松完成:
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