使用拆分函数拆分字符串以计算 "that" 的数量

Split a String using split function to count number of "that"

String str = "ABthatCDthatBHthatIOthatoo";     
System.out.println(str.split("that").length-1);

由此我得到 4。这是正确的,但如果最后一个后面没有任何字母,那么它会显示错误的答案“3”,如 :

String str = "ABthatCDthatBHthatIOthat";
System.out.println(str.split("that").length-1);

我想计算给定字符串中 "that" 个单词的出现次数。

试试这个

String fullStr = "ABthatCDthatBHthatIOthatoo";
String that= "that";
System.out.println(StringUtils.countMatches(fullStr, that));

使用 apache 通用语言中的 StringUtils,这个 https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/src-html/org/apache/commons/lang/StringUtils.html#line.170

您可以指定一个限制来计算最终的 'empty' 令牌

System.out.println(str.split("that", -1).length-1);

使用 lastIndexOf() 找出子字符串 "that" 的位置,如果它位于字符串的最后位置,则将 cout 递增 1。

str.split("that").length doesn't count the number of 'that's . It counts the number of words that have 'that' in between them

例如-

class test
{
 public static void main(String args[]) 
 {
     String s="Hi?bye?hello?goodDay";
     System.out.println(s.split("?").length); 
 }
}

这会return4,也就是用“?”隔开的字数。 如果你returnlength-1,在这种情况下,它将return3,这是问号数的正确计数。

But, what if the String is : "Hi????bye????hello?goodDay??"; ?

即使在这种情况下,str.split("?").length-1 也会 return 3,这是问号数量的错误计数。

str.split("that //or anything") 的实际功能 是创建一个字符串数组,其中所有 characters/words 由'that'(在本例中)。split() 函数return是一个字符串数组

所以,上面的 str.split("?") 实际上 return 一个字符串数组:{"Hi,bye,hello,goodDay"}

str.split("?").length 只是 return 数组的长度,其中 str 中的所有单词都用 '?' 分隔.

str.split("that").length 只是 return 数组的长度,其中 str 中的所有单词由'that'.

这是我link对问题的解决link

如有疑问请告诉我

希望对您有所帮助

public static void main(String[] args) throws Exception 


{   int count = 0;
        String str = "ABthatCDthatBHthatIOthat"; 
        StringBuffer sc = new StringBuffer(str);

    while(str.contains("that")){

        int aa = str.indexOf("that");
        count++;
        sc = sc.delete(aa, aa+3);
        str = sc.toString();


    }

    System.out.println("count is:"+count);


 }