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”字的出现次数。
答案 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);
}