"mnabcdefgabcxyzabca" 
一个文件中有多个这样的字符串, 
求这个字符串中的字串"abc"一共有多少个,怎么用java实现??只这个字符串为例。
如果用正则表达式怎么实现  ??
用正则的效率是否相对而言会好些!

解决方案 »

  1.   

    正则我不懂,贴个常规的public class Test {
    public static void main(String args[]){
    String str = "mnabcdefgabcxyzabca";
    String substr = "abc";
    int number = count(str,substr);
    System.out.println("There are " + number + " substrings in the string");
    }

    public static int count(String str,String substr){
    int count = 0;
    for(int i = 0;i < str.length() - 2; i++){
    String s = str.substring(i, i+3);
    if(s.equals(substr))
    count++;
    }
    return count;
    }
    }
      

  2.   


    String str6 = "abcdefgabcxyzabc";
    String regx6 = "abc";
    System.out.println(str6.split(regx6,5).length -1);
      

  3.   


    public static void main(String args[]){
            String str = "mnabcdefgabcxyzabca";
            String substr = "abc";
            System.out.println(str.split(substr).length);
    }
      

  4.   

    输出里掉了一个   -1System.out.println(str.split(substr).length -1);
      

  5.   

    System.out.println("mnabcdefgabcxyzabca".length - "mnabcdefgabcxyzabca".replaceAll("abc", "12").length)
      

  6.   


    这里有个问题:
    如果abc在开头和结尾。。
      

  7.   

    嗯   split方法  开头是没事的   结尾有问题   谢了
      

  8.   

    用正则就这样来做:import java.util.regex.*;
    public class Test7 {
    public static void main(String[] args){
    String str="abcmnabcdefgabcxyzabcabc";
    String regex="abc";
    Matcher mat=Pattern.compile(regex).matcher(str);
    int count=0;
    while(mat.find()){
     count++;
    }
    System.out.println(str+"中共有"+count+"个"+regex);
    }
       
    }
    F:\java>java Test7
    abcmnabcdefgabcxyzabcabc中共有5个abc
      

  9.   

    加一个限制参数就可以了:
    str.split(substr,5).length-1
      

  10.   

    回楼上,应该这样:str.split(regex,-1).length-1要不超过5个怎么办?
      

  11.   


    public static void main(String[] agrs){
    String s ="mnabcdefgabcxyzabca"
    String ss="abc";
    int count = 0;
    int index = -1;
    while( (index = s.indexOf(ss)) !=-1){
    s = s.substring(index+ss.length());
    count++;
    }
    System.out.println(count);
    }试试这个~
      

  12.   

    首先要保证这个串中要有这个abc吧
    否则split要出错。