使用split函数拆分字符串以计算“那个”的数量

时间:2017-09-03 11:29:26

标签: java split-function

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

从这里我得到4.这是正确的,但如果最后一个没有任何字母,那么它显示错误答案'3',如:

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

我想计算给定String中“that”字的出现次数。

5 个答案:

答案 0 :(得分:4)

您可以指定一个限制来计算最终的“空”标记

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

答案 1 :(得分:2)

  

str.split("")。长度不计算'的数量。它很重要   单词的数量''在他们之间

例如 -

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

这将是4,这是由"?"分隔的单词数。 如果返回length-1,在这种情况下,它将返回3,这是问号数量的正确计数。

  

但是,如果字符串是:"嗨????再见????你好?好日子?&#34 ;;的

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

str.split的实际功能(" //或其他任何")是制作一个String数组,其中包含由'分隔的所有字符/单词。该' (在本例中)。 split()函数返回一个String数组

所以,上面的str.split("?")实际上会返回一个String数组:{"嗨,再见,你好,goodDay"}

str.split("?")。长度只返回数组的长度,其中str中的所有单词由'?' 。

str.split("那")。长度只返回数组的长度,其中str中的所有单词都被'分隔开来。 。

以下是解决问题link

的链接

如果您有任何疑问,请告诉我。

答案 2 :(得分:1)

试试这个

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

使用来自apache common lang的StringUtils,这个https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/src-html/org/apache/commons/lang/StringUtils.html#line.170

答案 3 :(得分:1)

使用lastIndexOf()查找子串“that”的位置,如果它在字符串的最后位置,则将cout递增1的答案。

答案 4 :(得分:1)

我希望这会有所帮助

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);


 }