我想从字符串中获取子字符串的数量。
输入是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++;
}
}
答案 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
。