在JAVA中计算子串忽略大小写的出现次数

时间:2014-11-05 04:09:24

标签: java substring

我正在尝试计算html文件中div标签的出现次数。当我搜索div时,我得到2,而对于DIV,我得到1650.理想情况下,当我使用sHtml.toUpperCase(),然后搜索DIV时,我应该 1652 即可。但我得到 1656 。这可能会出现什么问题?

        /********* Counting occurences of div **************/
        String findString = "DIV";
        int lastIndex = 0;
        int count = 0;

        while (lastIndex != -1) {

            lastIndex = sHtml.indexOf(findString, lastIndex);

            if (lastIndex != -1) {
                count++;
                lastIndex += findString.length();
            }
        }
        System.out.println("Count of div = " + count);

2 个答案:

答案 0 :(得分:2)

你正在拾取之前混合的子串 - 比如Div。不过,这不是计算"div" s的好理由,因为您会选择较长的单词(例如DivisionDivorce)。

如果您想要更好的计数,可以使用简单的正则表达式进行计数:

"[</]div[ />]"

此正则表达式将匹配前面有div<的{​​{1}},后跟空格//:< / p>

>

答案 1 :(得分:1)

通过排除过程,您必须同时拥有DivDIvDiVdIV的组合。您的文字也可能包含一个带有 div 的单词(例如 long division )。